从本地 git 存储库访问 Python 包
Posted
技术标签:
【中文标题】从本地 git 存储库访问 Python 包【英文标题】:Access a Python Package from local git repository 【发布时间】: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 变量设置的。我可能错了,强硬..
【参考方案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 中对包进行符号链接,这样你就可以继续开发和测试。
【讨论】:
从技术上讲,两个答案都是正确的,但这正是我想要的!以上是关于从本地 git 存储库访问 Python 包的主要内容,如果未能解决你的问题,请参考以下文章
如何设置我的本地 Git 存储库以使用我刚刚创建的新个人访问令牌? [复制]
在 Azure DevOps Git 存储库中使用来自 Azure Pipelines 的 Python 包版本标记 Git 存储库