总结了下使用pipenv管理包的经验
当使用pipenv作为包管理工具时,你可以使用Pipfile来管理项目的依赖包和版本。Pipfile是一个用于定义项目依赖关系的文件,它包含了项目所需的包及其精确的版本号。
以下是一些使用pipenv和Pipfile的常用方法:
安装pipenv:
$ pip install pipenv
初始化一个新的项目环境:
在项目目录下,运行以下命令来创建一个新的虚拟环境并初始化Pipfile:
$ pipenv --python 3.8 # 指定Python版本
这将创建一个新的虚拟环境,并在项目目录下生成一个Pipfile文件。
如果要指定虚拟环境生成的路径,需要在环境变量里面加上
export PIPENV_VENV_IN_PROJECT=1
再执行这个让他生效
source /etc/profile
这句意思是虚拟环境会生成在当前项目目录下。如果想要指定其他的路径就需要添加另外一个环境变量了。
export WORKON_HOME=<Path of Virtual Environment>
这两个配置2选其一就可以了
安装依赖包:
使用pipenv install命令来安装项目所需的包,它会从Pipfile中读取依赖并安装相应的包。运行以下命令:
$ pipenv install package_name
如果需要指定版本
pipenv install package_name==version
这将安装指定的包,并将其添加到Pipfile中。
查看已安装的包:
运行以下命令来查看当前虚拟环境中已安装的包及其版本:
$ pipenv graph
这将显示已安装的包及其依赖关系的树状结构。
生成requirements.txt文件:
你可以使用以下命令生成一个requirements.txt文件,其中包含项目所需的所有包及其精确的版本信息:
pipenv requirements > requirements.txt
注意:requirements.txt文件使用pipenv lock命令生成,以确保它与当前虚拟环境中的包版本一致。
值得注意的是和这个pip命令的区别
pip freeze > requirements.txt
pipenv 那个命令会把使用pipenv install在虚拟环境里面的所有包生成到requirements.txt里面,会使用到pipfile.lock里面的东西
而pip那个命令则是直接把当前pip所有有的包生成到requirements.txt里面,可以根据自己需要选择命令。
这将在当前目录下创建一个名为requirements.txt的文件,其中包含项目所需的所有包及其版本。
如果需要使用requirements.txt来安装包
pipenv install -r requirements.txt
这会把requirements.txt文件中的依赖包转换成Pipfile文件中的格式,并安装它们
首先进入虚拟环境
pipenv shell
如果你想把包download下来,并且在无网络环境下安装的话
pip download -d <u wanna install path> -r requirements.txt
就会把依赖download到和txt同级目录下
然后你就可以zip这个项目,部署在无网络环境下,再执行下面命令,后面路径替换成你的依赖的path,默认情况下就是 ./
pip install -r ./requirements.txt --no-index --find-links <that dependencies path>
执行之后就可以在无网络环境下安装依赖了。
需要注意的是,如果部署端是linux的话,备份端也必须是linux,因为有些包linux和windows是不同的。
接下来是有网络
直接使用pipfile.lock安装依赖包:
$ pipenv install --ignore-pipfile
这将根据Pipfile.lock文件中指定的依赖包及其版本,自动安装所需的包。
通过使用pipenv和Pipfile,你可以更方便地管理项目的依赖关系,并确保在不同环境中使用相同的包和版本。
一旦你安装了项目的依赖包,你可以使用pipenv run命令来在虚拟环境中运行Python程序。以下是使用pipenv运行程序的一般步骤:
确保你已经在项目目录中打开了终端,并激活了项目的虚拟环境。你可以运行以下命令激活虚拟环境:
$ pipenv shell
如果需要退出虚拟环境
$ exit
或者
$ deactivate
运行Python程序:
在激活虚拟环境后,你可以直接使用python命令来运行Python程序。例如,假设你的程序文件名为main.py,你可以运行以下命令来执行该程序:
$ python main.py
请确保你在终端中位于项目的根目录,并提供正确的程序文件名。
如果你的程序依赖于虚拟环境中的某个特定的包,pipenv run命令可以确保在虚拟环境中运行程序,并自动加载所需的依赖包。例如:
$ pipenv run python main.py
这将在虚拟环境中执行main.py文件,并根据Pipfile.lock中的依赖关系加载相应的包。
请确保在运行Python程序之前,你已经正确激活了虚拟环境,并在虚拟环境中运行程序。这样可以确保程序在正确的环境中运行,并能够访问所需的依赖包。