Anaconda:永久导入自己的模块,而不是它们的 "directory-wise siblings"

Anaconda: Permanently import own module, but not their "directory-wise siblings"

我在“GitHub”文件夹中有多个 Python 项目(也是 Git 存储库),如下所示:

GitHub/
├── Project_1/
│   ├── main.py
│   └── ...
└── Project_2/
    ├── main.py
    └── ...

现在我想要的是 import Project_1 在 Project_2 的 .py 文件中(例如 main.py)。

我当然在网上搜索,发现了这些相关问题:

然而,他们都描述了我将如何设法达到 import GitHub,这不是我想要的,因为那时我得到了一个奇怪的自我导入 Project_2。

有什么方法可以实现我想要的,同时仍然可以“即时”修改所有代码(无需每次都重新安装)?

顺便说一句,我正在使用 PyCharm - 以防有内部解决方法。

也请告诉我,如果我做的任何事情是不好的做法,为什么 - 这样我就可以从中学习。

提前致谢!

如果项目packages are properly, well, packaged,即你可以一般pip install他们,那么你也可以使用pip install -e-e--editablepip 只是 link 它们到您当前的环境而不是复制文件。

这样包在它们的目录中保持可编辑,并且可以像任何其他包一样使用。

例子

一个易于操作的项目树示例可能如下所示。

- 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 已正确配置包安装(请参阅上面的 link),那么您可以在 project3 的 virtualenv 中执行pip install -e ~/my_projects/project1 -e ~/my_projects/project2package1package2 可供 secretproject 使用。