我在一个"GitHub"像这样的文件夹:
GitHub/
├── Project_1/
│ ├── main.py
│ └── ...
└── Project_2/
├── main.py
└── ...
现在我想要的是在Project_2的.py文件(例如main.py(中import Project_1
我搜索了网络,当然发现了这些相关的问题:
- Anaconda:永久包含外部包(如PYTHONPATH(
- 在Anaconda中包含外部包
然而,他们都描述了我将如何管理import GitHub
,这不是我想要的,因为那时我得到了Project_2的奇怪的自导入。
有没有什么方法可以实现我想要的,同时仍然保留修改所有代码的可能性;在飞行中";(不必每次都安装(?
顺便说一下,我正在使用PyCharm,以防有内部解决方法。
还请告诉我,如果我正在做的任何事情都是不好的做法,以及为什么-这样我就可以从中吸取教训。
提前感谢!
如果项目包打包得很好,也就是说,您通常可以使用pip install
,那么您也可以使用pip install -e
(-e
表示--editable
(让pip
将它们链接到当前环境,而不是复制文件。
这样,包在其目录中保持可编辑状态,并且可以像任何其他包一样使用。
示例
一个易于操作的项目树的例子可能如下所示。
- my_projects/ (née GitHub)
- project1/
- setup.py (or pyproject.toml)
- package1/
- __init__.py
- mod1.py
- mod2.py
- project2/
- setup.py (or pyproject.toml)
- package2/
- __init__.py
- mod3.py
- mod4.py
- project3/
- secretproject/
- __init__.py
- __main__.py # to allow running `python -m secretproject`
- mod5.py
这假设project1
和project2
是包含要在project3
中使用的包的项目,这些包不一定需要可重用。
如果project1
和project2
已针对包安装进行了正确配置(请参阅上面的链接(,那么您可以在project3
的virtualenv中使用pip install -e ~/my_projects/project1 -e ~/my_projects/project2
、package1
和package2
以供secretproject
使用。