![](/img/trans.png)
[英]Python script fails when moved to server - (Matplotlib versioning)
[英]Python script import fails if script is moved to subdirectory
这可能是我对Python导入和搜索路径的工作方式的误解,或者可能是caldav软件包的包装中存在问题。
我已经建立了一个名为myproject的virtualenv环境
在myproject的顶层,我有一个脚本test.py,其中包含两个导入:
import lxml
import caldav
在此目录中,键入:
python test.py
而且工作正常,没有任何问题
现在,将脚本移到子目录test并运行命令:
python test/test.py
导入lxml似乎仍然有效。 导入caldav失败,但有以下异常:
Traceback (most recent call last):
File "test/test.py", line 34, in <module>
main()
File "test/test.py", line 29, in main
exec ( "import " + modulename )
File "<string>", line 1, in <module>
File "/home/ec2-user/caldav2sql/myproject/test/caldav/__init__.py", line 3, in <module>
from davclient import DAVClient
File "/home/ec2-user/caldav2sql/myproject/test/caldav/davclient.py", line 8, in <module>
from caldav.lib import error
ImportError: No module named lib
我在这里做错什么了吗? 我应该设置某种路径吗?
最有可能的是, caldav
与test.py
位于同一目录中,因此在import
它可以正常工作。 既然您将test.py
移到了子目录,则导入无法找到它。 您可以移动caldav
或设置PYTHONPATH
。
您也可以修改sys.path
Python模块教程中的信息: http : //docs.python.org/tutorial/modules.html
变量sys.path是一个字符串列表,该字符串确定解释器对模块的搜索路径。 它初始化为从环境变量PYTHONPATH提取的默认路径,或者如果未设置PYTHONPATH则从内置默认值初始化。 您可以使用标准列表操作对其进行修改:
>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.