首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包括具有python安装外模块的xlrd/xlwt/xlutils

包括具有python安装外模块的xlrd/xlwt/xlutils
EN

Stack Overflow用户
提问于 2014-09-09 15:44:10
回答 1查看 539关注 0票数 2

我在Python世界里是自学的,所以一些结构惯例对我来说还是有点模糊。然而,我已经非常接近我想要完成的目标,但遇到了一个更大的问题。

基本上,我有一个类似这样的目录结构,它位于常规python安装之外(这将分发给那些不需要知道python安装是什么,但会有ArcGIS标准的安装)的人:

代码语言:javascript
复制
top_directory/
  ArcToolbox.tbx
  scripts/
    ArcGIStool.py (script for the tool in the .tbx)
    pythonmod/
      __init__.py
      general.py          
      xlrd/ (copied from my own python installation)
      xlwt/ (copied from my own python installation)
      xlutils/ (copied from my own python installation)

因此,我喜欢这个目录结构,因为所有的ArcGIStool.py脚本都调用pythonmod包中的函数(就像在general.py中的那样),并且所有的general.py函数都可以用简单的“导入xlrd”语句调用xlrd和xlwt函数。这意味着如果用户需要,他/她可以将pythonmod文件夹移动到python站点-packages文件夹,即使xlrd/xlwt/xlutils已经安装,一切都会运行良好。

问题是:一切都很好,直到我尝试在general.py中使用xlutils。具体来说,我需要“从xlutils.copy导入副本”。然而,这会引发一系列导入错误。其中之一是xlutils/copy.py使用“来自xlutils.filter导入过程、XLRDReader、XLWTWriter”。我通过这样修改xlutils/copy.py来解决这个问题:

代码语言:javascript
复制
try:
    from xlutils.filter import process,XLRDReader,XLWTWriter
except ImportError:
    from filter import process,XLRDReader,XLWTWriter

我认为这在其他情况下会很好,但是xlutils包中有一些模块需要导入xlrd。我试着遵循this建议,但是当我使用

代码语言:javascript
复制
try:
    import xlrd
except ImportError:
    import os, sys, imp
    path = os.path.dirname(os.path.dirname(sys.argv[0]))
    xlrd = imp.load_source("pythonmod.xlrd",os.path.join(path,"xlrd","__init__.py"))

我得到了一个新的导入错误:在xlrd/init.py中,信息模块被调用(来自xlrd/info.py),但是当我使用上面的代码时,我会收到一个错误,说明名称" info“没有定义。

这使我相信,我并不真正知道发生了什么,因为我认为当导入init.py文件时,它会像正常运行一样运行,并在其包含的info.py文件夹中查找。不幸的是,情况似乎并非如此。

感谢您的关心,如有任何帮助,将不胜感激。

附注:我不想修改路径变量,因为我不知道谁将使用这个工具集,权限可能是一个问题,等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-11 15:01:33

我意识到我使用imp.load_source是错误的。我想要做的正确语法应该是:

代码语言:javascript
复制
imp.load_source("xlrd",os.path.join(path,"xlrd","__init__.py"))

最后,我重写了代码,根本不需要xlutils,因为我仍然存在导入错误,导致的问题比需要处理的问题多得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25748856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档