一、Linux搭建
1.服务端的配置
# 创建虚拟环境
conda create -n pypiserver_env python==3.7.0
conda activate pypiserver_env
pip install pypiserver # 安装pypiserver服务器
~$ sudo mkdir packages # 存放包的库,建议创建在根目录下,而且名字必须是packages,如果不是,开启服务器的时候会有错误提示
sudo chmod 777 packages # 修改权限
pip install htpasswd
pip install passlib
~$ cd packages/
htpasswd -sc .htpasswd user # 创建存放密码的文件,user为自建的用户名,可以为别的,但是自己一定要记住,可能需要下载htpasswd以及passlib包,根据提示来下载
# pypi-server -p 8080 -P ~/.htpasswd ~/packages # 开启pypiserver服务器
# pypi-server -p 8080 -P auth/.htpasswd -a update,download,list --fallback-url https://pypi.doubanio.com/simple ./packages
# pypi-server -p 8080 -P ~/packages/.htpasswd -a update,download,list ./packages
# -p 是端口; -P 密码文件; -a 表示需要认证的操作,该示例中 上传、下载安装和查看包都需要认证; fallback-url 表示如果的你的 packages 中没有对应的包时,去哪个源获取这个包;./packages 表示包的位置
服务器开启后,登录谷歌浏览器,输入"localhost:8080"或者"http://127.0.0.1:8080"可以看到服务器开启成功.
2.客户端的配置
创建一个.pypirc的文件,此文件应该存放在根目录下
touch .pypirc # 此文件为一个隐藏文件,名字只能为这样
vim .pypirc # 编辑此文件中的内容
.pypirc文件中应该写入以下内容:
注意:repository网址最后 / 不要忘了>
[distutils]
index-servers = local # local为私有源服务器的名字,此处注释方便理解,文件中最好不要出现注释内容
[local]
repository:http://127.0.0.1:8080/ # 开启服务器的ip地址以及端口号
username:uesr # 服务器端设置的账户
password:user # 服务器设置的密码
此部分隐藏
3.后台启动
nohup pypi-server -p 8080 packages_dir &
pypi-server应该在后台运行,简单的话可用使用nohup命令,但一般都用supervisor来管理。
pip install supervisor
在
~/pypi$
目录创建pypi-server.conf,内容如下:[program:pypi-server] directory=/home/pypi/ command=/home/pypi/.venv/bin/pypi-server -p 8080 -P /home/pypi/.htpasswd /home/pypi/packages autostart=true autorestart=true redirect_stderr=true
其中-p选项指定侦听的端口,-P选项指定密码文件。
将该文件软链到supervisor的配置文件夹下:
cd /etc/supervisor/conf.d/ sudo ln -s /home/pypi/pypi-supervisor.conf pypi-supervisor.conf
重启supervisor
~$ sudo supervisorctl reload
查看pypi-server运行情况:
~$ sudo supervisorctl status pypi-server RUNNING pid 27289, uptime 16:41:19
可见pypi-server已经运行了
3.使用 systemd 管理 pypiserver
sudo vim /usr/lib/systemd/system/pypi.service
注意:必须为绝对路径
[Unit]
Description=pypi-server daemon
After=network.target
[Service]
ExecStart=/home/cwj0/anaconda3/envs/pypiserver_env/bin/pypi-server \
-p 8080 \
-P /home/cwj0/packages/.htpasswd -a update,download,list \
-r /var/www/pypi \
--log-file /var/log/pypi/pypi.log
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
# 创建 pypi 及 log 路径
$ sudo mkdir -p /var/www/pypi
$ sudo mkdir -p /var/log/pypi
4.启动 pypiserver
sudo systemctl daemon-reload
sudo systemctl start pypi
sudo systemctl status pypi
● pypi.service - pypi-server daemon
Loaded: loaded (/lib/systemd/system/pypi.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2022-02-23 11:01:06 CST; 7s ago
Main PID: 11363 (pypi-server)
Tasks: 1 (limit: 13415)
Memory: 16.1M
CGroup: /system.slice/pypi.service
└─11363 /home/cwj0/anaconda3/envs/pypiserver_env/bin/python /home/cwj0/anaconda3/envs/pypiserver>
2月 23 11:01:06 ubuntu systemd[1]: Started pypi-server daemon.
5.上传
# python setup.py sdist bdist_wheel upload -r local
# python setup.py sdist upload -r http://127.0.0.1:8080
pip install twine
twine upload --repository-url http://127.0.0.1:8080 packagename.whl
twine upload --repository-url http://127.0.0.1:8080 dist/* # 上传多个包
6.下载安装
# 方法一
pip install --index-url http://127.0.0.1:8080/simple/ sasl==0.2.1 # 安装指定版本
# 方法二
pip install -i http://127.0.0.1:8080/ --trusted-host 127.0.0.1 packagename # 可安装指定版本或多个包
二、Windows搭建
1.安装server
# pip install pypiserver
pip install pypiserver-1.4.2-py2.py3-none-any.whl
2.创建模块存放路径
在D盘创建packages
文件夹
3.安装所需库
pip install htpasswd
# 安装Apache
pip install passlib
4.生成帐号密码
htpasswd -sc D:\packages\.htpasswd user
回车后输入密码
5.启动
可使用NSSM自动启动
首先安装NSSM,下载https://nssm.cc/download
新建start_pypiserver.bat,填入:
pypi-server -p 8080 -P D:\packages\.htpasswd -a update,download,list D:\packages
在NSSM安装命令运行:nssm install pypiserver
在Application Path中填入start_pypiserver.bat的路径
Arguments根据上一步自动生成,点击Install service
右键我的电脑-> 管理 -> 服务和应用程序 -> 服务 ->找个刚刚输入的服务名称(这里是pypiserver)点击启动即可
配置系统环境变量,添加刚刚nssm.exe的文件目录
下面是nssm的常用命令
nssm install servername # 创建servername服务
nssm start servername # 启动服务
nssm stop servername # 暂停服务
nssm restart servername # 重新启动服务
nssm remove servername # 删除创建的servername服务
# pypi-server -p 8080 -P ~/packages/.passwd.txt ~/packages
# pypi-server D:\packages
pypi-server -p 8080 -P D:\packages\.htpasswd -a update,download,list D:\packages
# 后台启动
start /b pypi-server -p 8080 -P D:\packages\.htpasswd -a update,download,list D:\packages
# -p 是端口; -P 密码文件; -a 表示需要认证的操作,该示例中 上传、下载安装和查看包都需要认证; fallback-url 表示如果的你的 packages 中没有对应的包时,去哪个源获取这个包;./packages 表示包的位置
6.客户端配置
创建.pypirc
文件的时候,存放目录在C盘用户目录下,windows目录下创建.pypirc
文件使用notepad++编辑
.pypirc文件中应该写入以下内容:
[distutils]
index-servers =
local # local为私有源服务器的名字,此处注释方便理解,文件中最好不要出现注释内容
[local]
repository:http://127.0.0.1:8080/ # 开启服务器的ip地址以及端口号
username:user # 服务器端设置的账户
password:user # 服务器设置的密码
7.上传
# python setup.py sdist bdist_wheel upload -r local
# python setup.py sdist upload -r http://127.0.0.1:8080
pip install twine
# 方法一
twine upload -r local packagename # 后面为whl文件,可上传多个,以空格分隔
# 方法二
twine upload --repository-url http://127.0.0.1:8080 packagename.whl # 可上传多个包,以空格分隔
# 方法三
# twine upload -r local dist/* # 后面为whl文件
twine upload -r http://127.0.0.1:8080 dist/* # 后面为whl文件,上传多个文件
8.下载安装
# 方法一
pip install -i http://127.0.0.1:8080/ --trusted-host 127.0.0.1 packagename # 可安装多个,以空格分隔
# 方法二
pip install --index-url http://127.0.0.1:8080/ sasl==0.2.1 # 安装指定版本或者多个版本