python:将其他目录中的文件包含到项目中

时间:2017-09-07 12:21:07

标签: python

我有多个python项目应该使用多个共享文件,但我无法弄清楚如何在python中执行此操作。

如果我只是将文件复制到pyhton工作目录中,它可以正常工作:

from HBonds import calculateHBondsForSeveralReplicas, compareSameShapeHBMatrices, calculateHBonds

但我不想复制它。我想将它包含在:/ home / b / data / pythonWorkspace / util / HBonds

对我而言,这样做是有意义的(但它不起作用):

from /home/b/data/pythonWorkspace/util/HBonds/HBonds.py import calculateHBondsForSeveralReplicas, compareSameShapeHBMatrices, calculateHBonds

我该怎么做?

2 个答案:

答案 0 :(得分:0)

对于第三方图书馆,最好以库存方式安装它们 - 无论是系统site-packages还是virtualenv

对于您正在其运行的计算机上积极开发的项目,可维护的解决方案是将其根目录添加到PYTHONPATH,以便您可以{{ 1}}从任何地方。 That's what we did at my previous occupation.这里的主要优点是简单的代码库更新和切换。

另一种方法是使用relative imports,但它适用于包内引用,因此您不必在任何地方重申包名称。如果许多其他不相关的代码部分使用相同的模块,那么将共享部分作为一个独立的包可能更方便,这将是所有这些的依赖。

答案 1 :(得分:0)

您必须确保PYTHONPATH包含该目录的路径,如前面的答案所述。

或者您可以使用更糟糕的方式:使用这样的代码在运行时使其可用。

import os
import sys

folder = os.path.dirname('/home/b/data/pythonWorkspace/util/')

if dossier not in sys.path:
    sys.path.append(folder)

from HBonds import HBonds