PyCharm:如何使用一个项目作为另一个项目的依赖项?
在PyCharm中,我有一个项目调用另一个项目的模块 例如,假设我们有两个项目abc和xyz。在abc项目中,我们有一个带有函数f1()的模块abc.mod_a,在xyz项目中,我们有一个带有函数f2()的模块xyz.mod_b abc.mod_a.py:PyCharm:如何使用一个项目作为另一个项目的依赖项?,pycharm,pythonpath,Pycharm,Pythonpath,在PyCharm中,我有一个项目调用另一个项目的模块 例如,假设我们有两个项目abc和xyz。在abc项目中,我们有一个带有函数f1()的模块abc.mod_a,在xyz项目中,我们有一个带有函数f2()的模块xyz.mod_b abc.mod_a.py: import xyz.mod_b def f1(): xyz.mod_b.f2() xyz.mod_b.py: def f2(): print("something was done") 为了实现这一点,我做了以下工作:
import xyz.mod_b
def f1():
xyz.mod_b.f2()
xyz.mod_b.py:
def f2():
print("something was done")
为了实现这一点,我做了以下工作:
我已将xyz添加为abc项目的项目依赖项:
设置->项目->项目依赖项
我已将xyz主目录的路径添加到用于project abc的解释器的PYTHONPATH中:
设置->项目->项目解释器->显示所有->解释器路径->添加路径
当我运行使用abc.mod_a.py的代码时,我在初始import xyz语句中得到一个module not found错误。我做错了什么?最简单的方法是处理abc项目并打开xyz项目。您将看到下面的对话框 这将打开abc项目内部的xyz。它将为您处理所有依赖项 另一种选择是在开发模式下安装xyz python库。
这将在python的site packages目录中创建一个指向xyz目录的链接。当您调用
import xyz.mod_b
时,它将在适当的目录中查找。谢谢@justengel。我想我做到了你第一次提出的,我在PyCharm中将abc作为一个项目打开之后,添加了xyz作为一个项目。您的第二个建议很有趣,这是一个很容易撤销的建议(我以前很难让pip卸载完全清理已安装的软件包)?我问这个问题的原因是因为我已经在解释器的环境中安装了程序包xyz,我现在正在尝试用我可以为git PR编辑的源版本临时替换它,但我想先在PyCharm中开发它……一旦完成,我就不想在解释器中使用之前安装的xyz。pip uninstall-e../path_to/xyz
是否会正确清理解释器并使其保持原始状态,即解释器的虚拟环境(站点包)中仍安装了原始版本的xyz?如果用水管冲洗的话,我可能不太难重新安装,但如果可以避免的话,我会尽量小心避免把任何东西弄乱,因为我发现这类事情很棘手,尽管我猜这就是您学习的方式。顺便说一句,如果我没有将xyz添加为项目依赖项或project abc解释器的PYTHONPATH,那么该软件包将按预期找到,因为它已安装到Anaconda虚拟环境中。我正在尝试另一种方法,因为我不想编辑安装在站点包中的代码,这似乎是自找麻烦,相反,我想在单独的位置编辑xyz的源代码,即单独的项目xyz。您可以使用pip uninstall xyz
卸载。我以前没有pip卸载问题。我认为这只是在站点包中创建一个.egg文件夹,链接到您的目录。您没有在站点包中编辑代码。我没有遇到PyCharm不使用依赖项目的问题。确保您的软件包有一个\uuuu init\uuuu.py
文件。您还可以右键单击并排除具有相同名称的目录,也可以将父目录标记为源根目录。
pip install -e ../path_to/xyz