我正在努力解决 Python 路径问题。我希望能够从目录导入文件。当它可以从文件系统中获取时,我可以执行此操作,但当我依靠 PATH(更新:或 PYTHONPATH)来查找它时,则不能执行此操作。
这是症状。首先,检查我的当前目录是否在我的 PATH 中:
(.venv)~/Dropbox/gds/myapp $ pwd
/Users/me/Dropbox/gds/myapp
(.venv)~/Dropbox/gds/myapp $ echo $PATH
... :/usr/local/go/bin:.:/Users/me/Dropbox/gds/myapp
并检查 test/test_app
是否在我认为的位置(并且目录中有一个 __init__.py
:
(.venv)~/Dropbox/gds/myapp $ ls tests/
__init__.py __pycache__ test_app.py test_views.py
现在检查 Python 是否可以从此目录导入 test/test_app
:
(.venv)~/Dropbox/gds/myapp $ python
Python 3.4.2 (default, Jan 29 2015, 13:46:46)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tests
>>> import tests.test_app
>>> exit()
到目前为止一切都很好。现在移动到另一个目录,看看是否可以导入 test/test_app
:
(.venv)~/Dropbox/gds/myapp $ cd ..
(.venv)~/Dropbox/gds $ python
Python 3.4.2 (default, Jan 29 2015, 13:46:46)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tests
>>> import tests.test_app
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'tests.test_app'
但是 /Users/me/Dropbox/gds/myapp
在我的 PATH 中,并且我可以导入该目录,那么为什么我不能导入该文件?
更新:
感谢您的建议。刚刚尝试执行 export PYTHONPATH=$PYTHONPATH:/Users/me/Dropbox/gds/myapp
: 但当我运行 Python 时仍然遇到同样的问题。
最佳答案
该目录需要位于 PYTHONPATH
中,而不是 PATH
(用于常规非 Python 命令查找)。
关于Python路径困惑: can import directory but not files?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28237762/