`pipenv install -e .` 是什么意思以及如何使用它?

9 浏览
0 Comments

`pipenv install -e .` 是什么意思以及如何使用它?

pipenv帮助文档写道:\n

\n将本地的setup.py安装到您的虚拟环境/Pipfile中:\n$ pipenv install -e .\n

\n有人可以进一步解释何时以及如何使用命令pipenv install -e .setup.py相关吗?\n根据pipenv-e .指的是可编辑的依赖。然而,我无法理解给出的解释。有人可以解释一下吗?\n编辑:\n例如,我在--user目录中的pip中创建了一个简单的发行包mypkg,即~/mypkg,使用以下命令:\n

$ pipenv shell
(mypkg-x985xH5M) $ python3 setup.py sdist bdist_wheel
(mypkg-x985xH5M) $ twine upload --repository-url https://test.pypi.org/legacy/ dist/*

\n并且/mypkg具有以下文件结构:\n

/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

\n命令$ pipenv install -e .是什么意思?

0
0 Comments

`pipenv install -e .` 的作用是将当前项目安装到虚拟环境中,并且以可编辑模式进行安装。这样做的原因是,通常情况下,使用`pip`安装项目时,会将项目文件复制到Python的`site-packages`目录中。这意味着,如果你在本地对项目文件进行修改,那么通过`site-packages`加载这些文件的项目将无法反映出修改后的变化。

使用`-e`参数可以在`site-packages`中创建一个指向项目位置的指针文件,从而将项目的位置添加到Python的模块搜索路径中。这样一来,加载模块时将从磁盘上的位置加载,而不是从`site-packages`中加载,这样每次运行使用该模块的Python项目时,文件的更改都能得到体现。

在运行`pipenv install -e .`时,`.`表示将当前工作目录作为要构建的项目的位置。对于你的示例,在`~/mypkg`目录中运行`pipenv install -e .`将运行`python3 setup.py develop`命令,并在Pipenv维护的Python 3虚拟环境的`site-packages`目录中添加一个`.egg-link`文件。在同一个`site-packages`目录中,一个`easy-install.pth`文件将被更新以添加`~/mypkg`目录的完整路径。这意味着,在Python中使用`import mypkg`将直接从`~/mypkg/mypkg`包中导入代码,而你对`.py`文件的任何更改都将直接生效。

总结一下,`pipenv install -e .`命令将会将依赖从`setup.py`文件的`install_requires`字段添加到`Pipfile.lock`中,并将这些依赖安装到当前的虚拟环境中。而`-e`参数将以可编辑模式进行安装,不会将项目文件复制到`site-packages`中。

需要注意的是,`pipenv`只是`pip`的一个包装器,在这种情况下,它记录直接和间接依赖关系的层次结构,并通过给定相同的锁定文件在其他地方重新创建相同的环境。

0