Python安装在本地目录中。
我的目录树如下所示:
(local directory)/site-packages/toolkit/interface.py
我的代码在这里:
(local directory)/site-packages/toolkit/examples/mountain.py
为了运行该示例,我编写了python mountain.py
,并且在代码中有:
from toolkit.interface import interface
我得到错误:
Traceback (most recent call last):
File "mountain.py", line 28, in ?
from toolkit.interface import interface
ImportError: No module named toolkit.interface
我已经检查过sys.path
并且那里有目录/site-packages
。 另外,我在toolkit文件夹中有文件__init__.py.bin
,以向Python指示这是一个软件包。 我在示例目录中也有一个__init__.py.bin
。
我不知道为什么在sys.path
时Python无法找到该文件。 有任何想法吗? 可以是权限问题吗? 我需要执行许可吗?
#1楼
就我而言,问题是我链接到调试 python
& boost::Python
,它要求扩展名是FooLib_d.pyd
,而不仅仅是FooLib.pyd
; 重命名文件或更新CMakeLists.txt
属性CMakeLists.txt
该错误。
#2楼
- 您必须在与要导入文件相同的目录中拥有文件__ init__.py。
- 您不能尝试从PYTHONPATH上配置的2个文件夹中导入具有相同名称的文件。
例如:/ etc / environment
PYTHONPATH = $ PYTHONPATH:/ opt /文件夹1:/ opt /文件夹2
/ opt / folder1 / foo
/ opt / folder2 / foo
并且,如果您尝试导入foo文件,python将不知道您要哪个。
从foo import ... >>> importerror:没有名为foo的模块
#3楼
我在LPTHW中进行此练习时遇到了非常相似的事情。 我永远无法让Python识别出我正在从其调用的目录中有文件。 但是我最终能够使它工作。 我所做的以及我的建议是尝试以下操作:
(注意:从您的第一篇文章中,我假设您使用的是基于* NIX的计算机,并且正在通过命令行运行,因此此建议是针对性的。自从我运行Ubuntu以来,我就是这样做的。
1)将目录(cd)更改为文件所在目录上方的目录。 在这种情况下,您将尝试运行mountain.py
文件,并尝试调用在单独目录中的toolkit.interface.py
模块。 在这种情况下,您将转到包含两个文件路径的目录(或换句话说,这两个文件的路径共享的最近目录)。 在这种情况下,该目录是toolkit
目录。
2)在tookit
目录中时,在命令行上输入以下代码行:
export PYTHONPATH=.
这会将您的PYTHONPATH设置为“。”,这基本上意味着您的PYTHONPATH现在将在您当前所在目录(甚至更重要的是,您所