Anaconda:永久导入自己的模块,但不导入他们的"模块";目录式兄弟"



我在一个"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

这假设project1project2是包含要在project3中使用的包的项目,这些包不一定需要可重用。

如果project1project2已针对包安装进行了正确配置(请参阅上面的链接(,那么您可以在project3的virtualenv中使用pip install -e ~/my_projects/project1 -e ~/my_projects/project2package1package2以供secretproject使用。

最新更新