我和另一位开发者对于使用 PYTHONPATH
还是 sys.path
来允许 Python 在用户目录(例如开发目录)中找到一个 Python 包持不同意见。
我们有一个具有典型目录结构的 Python 项目:
Project
setup.py
package
__init__.py
lib.py
script.py
在 script.py 中,我们需要执行 import package.lib
。当该包安装在 site-packages 中时,script.py 可以找到 package.lib
。
然而,在从用户目录中工作时,需要采取其他措施。我的解决方案是将PYTHONPATH
设置为包括"~/Project"
。另一位开发人员希望将这行代码放在 script.py 的开头:
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
这样Python可以找到package.lib
的本地副本。
我认为这是一个不好的想法,因为这行只对开发者或从本地副本运行的人有用,但我无法给出为什么这是个坏想法的好理由。
我们应该使用PYTHONPATH
、sys.path
还是两者都可以?
PATH
和sys.path
(以及间接涉及到的PYTHONPATH
)的区别,请参阅https://dev59.com/doLba4cB1Zd3GeqPgI0Y。 - tripleee