【问题标题】:Access a Python Package from local git repository从本地 git 存储库访问 Python 包
【发布时间】:2013-08-03 02:44:19
【问题描述】:

我的机器上有一个本地 git repository,假设在 /develop/myPackage 下。
我目前正在将它开发为一个 python 包(一个 Django 应用程序),我想从我的本地 virtualenv 访问它。我试图在我的PYTHONPATH 中包含它的路径(我在 Mac 上)

export PATH="$PATH:/develop/myPackage"

该目录已在其根目录和每个子目录中包含__init__.py。 不管我做什么,但我不能让它工作,python 不会看到我的包。

替代方案是:

  • 将我的本地更改推送到 github 并使用 pip 在我的 virtualenv 中安装包
  • 激活我的 virtualenv 并使用 python setup.py install 手动安装包

由于我经常需要对我的代码进行更改,因此最后两个解决方案将需要大量的工作,即使是很小的更改。

我做错了吗?您能提出更好的解决方案吗?

【问题讨论】:

  • 您声称要设置PYTHONPATH,但您的示例是设置PATH。它们不是一回事。
  • 据我所知,在 Mac 上 PYTHONPATH 环境。变量是通过 PATH 变量设置的。我可能错了,强硬..

标签: python package virtualenv pip pythonpath


【解决方案1】:

您上面显示的示例使用 PATH,而不是 PYTHONPATH。通常,python 使用的搜索路径部分基于 PYTHONPATH 环境变量(PATH 在这种情况下几乎没有用处。)

试试这个:

export PYTHONPATH=$PYTHONPATH:/develop/myPackage

虽然实际上,您可能希望它指向包含您的包的目录(因此您可以执行“导入 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,我都有相互矛盾的意见。无论如何我都试过了,我可以导出和访问这两个变量,但我不能导入我的包。我尝试导入它来激活和停用我的 virtualenv,但没有成功。
  • 正如 TheBigC 指出的那样,您设置 PYTHONPATH 不正确。
  • 谢谢,我设法使用 PYTHONPATH 变量使其工作。我也打算深入。例如导出/my_projects/my_django_app/my_package 的东西不起作用,但导出/my_projects/my_django_app 的东西确实起作用。我很困惑,因为my_django_app 在其根部没有__init__.py(my_package 有它)。我通过import my_package 让它工作。我想我在这里错过了一步。
  • 而且我仍然不明白为什么 PYTHONPATH 默认为空。 python 从何而来?那么它应该是PATH变量...
  • import sys 然后print sys.path 为您解答
【解决方案2】:

从您的本地路径将其安装到editable mode

pip install -e /develop/MyPackage

这实际上是在你的 virtualenv 中对包进行符号链接,这样你就可以继续开发和测试。

【讨论】:

  • 从技术上讲,两个答案都是正确的,但这正是我想要的!
猜你喜欢
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2021-08-29
  • 2012-07-04
  • 2018-04-30
  • 2011-12-15
相关资源
最近更新 更多