1. 简介
Pip(Pip Installs Packages)是Python的一个包管理工具,能够方便地安装、卸载、更新Python包及其依赖项。它是Python 2.7.9及Python 3.4及以后版本的默认包管理工具。本文将介绍一些pip高级使用技巧,以及如何搭建自己的pypi服务器。
2. pip高级使用技巧
2.1 查看已安装的包
使用pip命令的list子命令可以列出已安装的Python包:
pip list
可以使用grep命令进行过滤:
pip list | grep package_name
2.2 升级所有已安装的包
使用pip命令的freeze和install子命令可以实现升级所有已安装的Python包:
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
2.3 安装指定版本的包
使用pip命令的install子命令结合包的版本号可以安装指定版本的Python包:
pip install package_name==version_number
2.4 卸载指定包
使用pip命令的uninstall子命令可以卸载指定的Python包:
pip uninstall package_name
2.5 创建虚拟环境
虚拟环境是Python的一个特性,可以帮助开发人员创建多个Python环境,每个环境拥有独立的Python包和不同的Python版本。使用pip命令的venv子命令可以在当前目录下创建一个新的虚拟环境:
python -m venv env_name
其中,env_name是你想要给虚拟环境取的名字。启用虚拟环境:
source env_name/bin/activate
退出虚拟环境:
deactivate
3. 搭建自己的pypi服务器
3.1 安装pypiserver
pypiserver是一个轻量级的pypi服务器,使用pip可以很方便地进行安装:
pip install pypiserver
3.2 创建储存包的目录
在你想要储存Python包的目录下创建一个文件夹,例如:
mkdir pypi_server
cd pypi_server
mkdir packages
3.3 配置pypiserver
在pypi_server目录下创建一个名为.htaccess的文件,用于配置用户访问权限:
touch .htaccess
在.htaccess文件中添加以下四行内容:
AuthType Basic
AuthName "Private PyPI"
AuthUserFile $(pwd)/.htpasswd
Require valid-user
文件中的AuthUserFile和Require valid-user分别指定了使用哪个文件保存用户信息和要求访问者提交用户名和密码。
创建一个.htpasswd文件来存放用户名和密码:
htpasswd -c .htpasswd username
其中,username是你的用户名。这个命令会提示你用一个密码来保护这个用户。如果需要添加更多的用户,可以不使用-c选项重建这个文件。
编辑pypi_server目录下的pypi_server.py文件,添加以下一行:
HTPASSWD_FILE = os.path.join(os.path.dirname(__file__), '.htpasswd')
这个变量指向你刚刚创建的.htpasswd文件。
下一行添加:
PACKAGES_ROOT = os.path.join(os.path.dirname(__file__), 'packages')
这个变量指向你刚刚创建的packages目录。
3.4 启动pypiserver
使用以下命令启动pypi服务器:
pypi-server -p 8080 packages/
-p选项指定了服务器要监听的端口号。
3.5 上传包到pypi服务器
使用pip命令的upload子命令可以上传Python包到pypi服务器:
pip install twine
twine upload --repository-url http://localhost:8080/ --username username --password password dist/*
其中,--repository-url指定了要上传到的pypi服务器的地址,--username和--password分别指定了你的用户名和密码,dist/*指定了要上传的Python包。
3.6 安装包
在另外一台机器上,使用以下命令安装从pypi服务器下载的Python包:
pip install --extra-index-url http://username:password@server_ip:8080/simple package_name
其中,--extra-index-url指定了要从哪个pypi服务器下载包,server_ip是pypi服务器的IP地址。
总结
pip是Python的重要特性之一,可以方便地管理Python包。本文介绍了一些pip高级使用技巧,以及搭建自己的pypi服务器的步骤。