从本地git仓库访问Python包

12

我在本地机器上有一个名为/develop/myPackagegit仓库
目前,我正在开发它作为一个Python包(Django应用程序),我想从本地的virtualenv中访问它。 我已经尝试将其路径包含在我的PYTHONPATH中(我使用的是Mac)。

export PATH="$PATH:/develop/myPackage"
目录已经包含在根目录和每个子目录中都有一个__init__.py。 无论我做什么,但我无法让它工作,Python无法看到我的包。
替代方法为:
  • 将本地更改推送到github,并从那里使用pip在虚拟环境中安装软件包
  • 激活我的虚拟环境,并使用python setup.py install手动安装软件包
由于我经常需要对代码进行更改,因此即使是小的更改,最后两种解决方案也需要太多工作量。
我做错了什么吗? 你会建议更好的解决方案吗?

1
你声称正在设置 PYTHONPATH,但是你的示例却在设置 PATH。它们不是同一件事情。 - Eric Urban
据我所知,在 Mac 上,PYTHONPATH 环境变量是通过 PATH 变量设置的。我可能是错的,不过。 - Leonardo
使用pip安装git+https://github.com/praw-dev/praw.git从Github导入一个Python库。参考链接:https://stackoverflow.com/questions/19943022/import-a-python-library-from-github - undefined
2个回答

15

从本地路径以可编辑模式安装:

pip install -e /develop/MyPackage

这实际上是在你的虚拟环境中创建软链接,这样你就可以继续进行开发和测试。


从技术上讲,两个答案都是正确的,但这正是我要找的! - Leonardo

4
上面的示例使用的是PATH变量,而不是PYTHONPATH。通常情况下,Python使用的搜索路径部分基于PYTHONPATH环境变量(对于此情况,PATH几乎没有用处)。
请尝试以下内容:
export PYTHONPATH=$PYTHONPATH:/develop/myPackage

实际上,您可能希望它指向包含您的软件包的目录(这样您就可以执行“import myPackage”,而不是导入包中的内容)。 话虽如此,您可能需要:

export PYTHONPATH=$PYTHONPATH:/develop/

关于Python模块/包搜索路径的更多信息,请参考Python文档:http://docs.python.org/2/tutorial/modules.html#the-module-search-path

默认情况下,Python使用安装时的包作为其默认路径,并且因此在环境中未设置PYTHONPATH。


首先,在 Mac 上,PYTHONPATH 是一个空变量。我认为一切都是使用 PATH 变量设置的。通过谷歌搜索,我得到了关于是否使用 PATH 或 PYTHONPATH 的不同意见。无论如何,我已经尝试了两种方法,我可以导出和访问这两个变量,但我无法导入我的包。我已经尝试过在激活和停用虚拟环境时导入它,但没有成功。 - Leonardo
正如TheBigC所指出的,您正在错误地设置PYTHONPATH。 - Eric Urban
谢谢,我使用PYTHONPATH变量成功让它工作了。我也深入研究了一下。例如,导出/my_projects/my_django_app/my_package时,事情并没有起作用,但是导出/my_projects/my_django_app时,事情确实起作用了。我感到困惑,因为my_django_app在其根目录下没有__init__.py(my_package有)。而我通过import my_package使其工作。我想我错过了一步。 - Leonardo
我仍然不明白为什么PYTHONPATH默认为空。Python从哪里获取路径?那应该是PATH变量... - Leonardo
执行 import sys 然后 print sys.path 来获取你的答案。 - Eric Urban

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接