`pipenv install -e .` 有什么作用以及如何使用它?
What does `pipenv install -e .` do and how to use it?
pipenv
帮助文档写道:
Install a local setup.py into your virtual environment/Pipfile:
$ pipenv install -e .
有人可以进一步详细说明何时以及如何使用与 setup.py
有关的命令 pipenv install -e .
吗?
根据pipenv
,-e .
指的是editable dependencies。但是,我无法理解给出的解释。有人可以解释一下吗?
编辑:
例如,在我在 pip
的 --user
目录中创建了一个简单的发行包调用 mypkg
之后,即 ~/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 .
有什么作用?
通常,pip
(驾驶 setup.py
或另一个 PEP 518 compliant build tool)将构建并 安装 一个 Python 项目,进入Python site-packages
位置。 .py
和 .pyc
文件在此过程中被复制过来。
这意味着如果您在磁盘上有项目的本地副本,则不能只编辑 .py
源文件并查看从 [=12] 加载这些相同文件的项目中反映的更改=].
-e
开关构建,然后在 site-packages
中安装一个指针文件,自动将项目的位置添加到 Python 的模块搜索路径中。现在加载模块将从磁盘上的位置加载它们,而不是从 site-packages
,并且每次 运行 一个使用它的 Python 项目时,文件的更改都会显示出来。参见 Python setup.py develop vs install and Difference between setup.py install and setup.py develop
.
只是告诉 pip
/ pipenv
将当前工作目录作为要构建的项目的位置(setup.py
或 pyproject.toml
文件[build-system]
部分应该存在于该目录中。
对于你的例子,运行ning pip install -e .
in ~/mypkg
,这意味着 python3 setup.py develop
将是 运行,添加一个 .egg-link
文件在 Pipenv 维护的 Python 3 virtualenv 的 site-packages
目录中。在同一个 site-packages
目录中有一个 easy-install.pth
文件,该文件已更新以添加 ~/mypkg
目录的完整路径。所有这一切意味着 Python 中的 import mypkg
将直接从 ~/mypkg/mypkg
包中导入代码,并且您对 .py
文件所做的任何更改都将直接可用。
pipenv
帮助文档写道:
Install a local setup.py into your virtual environment/Pipfile:
$ pipenv install -e .
有人可以进一步详细说明何时以及如何使用与 setup.py
有关的命令 pipenv install -e .
吗?
根据pipenv
,-e .
指的是editable dependencies。但是,我无法理解给出的解释。有人可以解释一下吗?
编辑:
例如,在我在 pip
的 --user
目录中创建了一个简单的发行包调用 mypkg
之后,即 ~/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 .
有什么作用?
通常,pip
(驾驶 setup.py
或另一个 PEP 518 compliant build tool)将构建并 安装 一个 Python 项目,进入Python site-packages
位置。 .py
和 .pyc
文件在此过程中被复制过来。
这意味着如果您在磁盘上有项目的本地副本,则不能只编辑 .py
源文件并查看从 [=12] 加载这些相同文件的项目中反映的更改=].
-e
开关构建,然后在 site-packages
中安装一个指针文件,自动将项目的位置添加到 Python 的模块搜索路径中。现在加载模块将从磁盘上的位置加载它们,而不是从 site-packages
,并且每次 运行 一个使用它的 Python 项目时,文件的更改都会显示出来。参见 Python setup.py develop vs install and Difference between setup.py install and setup.py develop
.
只是告诉 pip
/ pipenv
将当前工作目录作为要构建的项目的位置(setup.py
或 pyproject.toml
文件[build-system]
部分应该存在于该目录中。
对于你的例子,运行ning pip install -e .
in ~/mypkg
,这意味着 python3 setup.py develop
将是 运行,添加一个 .egg-link
文件在 Pipenv 维护的 Python 3 virtualenv 的 site-packages
目录中。在同一个 site-packages
目录中有一个 easy-install.pth
文件,该文件已更新以添加 ~/mypkg
目录的完整路径。所有这一切意味着 Python 中的 import mypkg
将直接从 ~/mypkg/mypkg
包中导入代码,并且您对 .py
文件所做的任何更改都将直接可用。