pipenv
帮助文档中写道:
将本地setup.py安装到您的虚拟环境/ Pipfile中:
$ pipenv install -e
有人可以进一步详细说明何时和如何使用与pipenv install -e .
相关的命令setup.py
吗?
根据pipenv
,-e .
指editable dependencies。但是,我无法理解给出的解释。有人可以解释吗?
编辑:
例如,我在mypkg
的{{1}}目录(即--user
)的pip
目录中创建了一个简单的发行版软件包调用~/mypkg
之后,使用以下命令:
$ pipenv shell
(mypkg-x985xH5M) $ python3 setup.py sdist bdist_wheel
(mypkg-x985xH5M) $ twine upload --repository-url https://test.pypi.org/legacy/ dist/*
和/mypkg
并具有以下文件结构:
/mypkg
|_ LICENSE
|_ README.md
|_ setup.py
|_ /mypkg
| |_ __init__.py
| |_ mypkg.py
|_ /dist
| |_ mypkg-0.0.1rc1.tar.gz
| |_ mypkg-0.0.1rc1-py3-none-any.whl
|_ /build
| |_ /bdist.linux-x86_64
| |_ /lib
| |_ /mypkg
| |_ __init__.py
| |_ mypkg.py
|_ /mypkg.egg-info
|_ dependency_links.txt
|_ entry_points.txt
|_ PKG-INFO
|_ SOURCES.txt
|_ top_level.txt
$ pipenv install -e .
命令做什么?
答案 0 :(得分:2)
通常,pip
(驱动setup.py
)将在Python site-packages
位置生成并安装一个Python项目。 .py
和.pyc
文件在此过程中被复制。
这意味着,如果您在磁盘上具有项目的本地副本,则不能仅编辑.py
源文件并查看在从site-packages
加载相同文件的项目中所反映的更改。
先构建-e
开关,然后在site-packages
中安装一个指针文件,该文件会自动将项目的位置添加到Python的模块搜索路径中。现在加载模块将从磁盘上的位置而不是site-packages
加载它们,并且每次运行使用它的Python项目时,对文件的更改都会显示出来。参见Python setup.py develop vs install和Difference between setup.py install and setup.py develop
.
只是告诉pip
/ pipenv
将当前工作目录作为要构建的项目的位置(setup.py
应该存在于当前工作目录中)。
例如,在pip install -e .
中运行~/mypkg
,这意味着python3 setup.py develop
将运行,并在Python的.egg-link
目录中添加一个site-packages
文件Pipenv正在维护的3个virtualenv。在同一site-packages
目录中是一个easy-install.pth
文件,该文件已更新以添加~/mypkg
目录的完整路径。所有这些都意味着Python中的import mypkg
将直接从~/mypkg/mypkg
包中导入代码,并且您对.py
文件所做的任何更改都将直接可用。