gpt4 book ai didi

如果脚本移至子目录,Python 脚本导入会失败

转载 作者:行者123 更新时间:2023-11-30 23:56:27 25 4
gpt4 key购买 nike

这可能是我自己对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

我在这里做错了什么吗?我应该设置某种路径吗?

最佳答案

很可能,caldavtest.py 位于同一目录中,因此当您导入时它工作正常。现在您已将 test.py 移至子目录,您的导入将无法找到它。您可以移动 caldav 或设置 PYTHONPATH .

您还可以修改您的sys.path

来自Python模块教程的信息:http://docs.python.org/tutorial/modules.html

The variable sys.path is a list of strings that determines the interpreter’s search path for modules. It is initialized to a default path taken from the environment variable PYTHONPATH, or from a built-in default if PYTHONPATH is not set. You can modify it using standard list operations:

>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')

关于如果脚本移至子目录,Python 脚本导入会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com