TL;DR
您可以通过为项目创建setup.py
文件,然后运行pip install -e .
来解决此问题,而不是修改sys.path
。
动机
这个答案可能与这个问题无关,但我把它放在这里是因为OP对这个解决方案表现出了兴趣,而且我认为这通常是比操作sys.path
更可取的解决方案。
详情
我倾向于为我的项目创建一个实际的setup.py
,就好像我要将它们发布到PyPI一样,然后运行pip install -e .
将它们安装到我的(可能是虚拟的)Python环境中。
这是一个类似于我以前使用过的极简setup.py
:
from setuptools import setup
setup(
name="project",
version="0.0.1",
python_requires=">=3.6",
author="Some cool dude",
long_description="Some cool project",
install_requires=["dep1", "dep2"],
)
在另一个项目中,我在我的
setup.py
文件中读取了我的
requirements.txt
文件:
from setuptools import setup
with open("requirements.txt") as f:
requirements = f.read().splitlines()
setup(
name="project",
version="0.0.1",
python_requires=">=3.6",
author="Some cool dude",
long_description="Some cool project",
install_requires=requirements,
)
无论使用哪种解决方案,
setup.py
文件都是我的
project
目录的同级目录(我总是使用小写字母命名我的项目),它们通常位于我的Git repo的根目录下,或者在
src
子目录下。
进入
setyp.py
和
project
所在的目录,运行。
pip install -e .
现在你可以从任何地方导入project
或其子模块,Python会找到它们。
建议阅读
有关setup.py
文件的更多详细信息,请访问setup.py示例?
__init__.py
的文件? - ewokxsys.path.append('..')
,并且它对我起作用了。 - joanis