2017-04-26 71 views
0

我想对GitHub上的公共项目进行更改(并可能对其做任何贡献)。我分叉并克隆了模块,但Im不清楚如何让我的程序导入本地库,而不是“官方”安装的模块。在Python中导入分叉模块而不是已安装的模块

我想它克隆到我的项目文件夹,但是当我导入它,并试图使用它,事情变得怪异calmap\calmap.plot()

我也想这样做sys.path.append和文件夹的位置。但它似乎仍然是进口官方产品而不是叉头。

我假设我可以把我的程序放在模块文件夹内,这样就可以首先找到模块,但是我无法想象那是'正确'的方法。

| 
|-->My_Project_Folder/ 
| 
|-->Forked_Module/ 
    |-->docs/ 
    |-->Forked_Module/ 
      |-->__init__.py 
+0

这是一种情况,其中_best_选项可能在像[virtualenv]这样的虚拟环境中运行fork(https://virtualenv.pypa.io/en/stable/ )或[anaconda](https://www.continuum.io/downloads)。 – mgilson

+0

这种类型的重复问题http://stackoverflow.com/questions/23075397/python-how-to-edit-an-installed-package – Rajaram

+0

为什么不把Forked_Module根放入My_Project_Folder并从那里导入模块?比较[python - 从子文件夹导入模块](http://stackoverflow.com/questions/8953844/import-module-from-subfolder) – keocra

回答

1

如果您已经在使用anaconda,那么您可以创建一个新的环境来开发此功能。

首先,创建一个新的环境:

# develop_lib is the name of the environment. 
# You can pick anything that is memorable instead. 
# You can also use whatever python version you require ... 
conda create -n develop_lib python3.5 

一旦你的环境,那么你可能想在当前会话进入这样的环境:

source activate develop_lib 

好了,现在你设置了环境,你可能需要为你正在开发的任何第三方库安装一些要求。我不知道这些依赖关系是什么,但是您可以使用conda install(如果它们可用)或使用pip将它们安装在您的环境中。现在您已准备好开始使用要更新的库。 python setup.py develop应该可用,假定该包具有标准构建过程。运行后,事情应该很好。您可以进行更改,运行测试等。

+0

加入'develop'标志似乎是个诀窍。谢天谢地,如果我在anaconda环境处于活动状态时打开笔记本内核,它似乎认识到我需要本地的calmap版本。 – DChaps

0

如果使用sys.path.append()如果没有前面的包含您要导入的模块将被用于新的“路径”。如果你想要的“添加路径”拥有优先都是上了年纪,你必须使用

sys.path.insert(0, "path") 

这样,如果打印sys.path你会看到添加的路径是在列表的开始并且您正在导入的模块将从您指定的路径加载。

+0

虽然路径正确添加到“sys.path”,但没有工作。我应该加入'/ Users /.../calmap'还是'/ Users /.../calmap/calmap'?任何其他想法或其他有助于我提供的信息? – DChaps

+0

对于示例树,您在您的问题中发布了:'sys.path.insert(0,'/ Users /...../ Forked_Module')'。然后使用'import Forked_Module'导入。如果这不起作用,则实际使用的行后面跟着'print sys.path'。 –