在artifactory上传和安装python包
2021年12月2日 - 由Bo 0 评论 2532 阅读
关于上传artifactory是为了在公司内部使用,上传自己打的python包和安装它。我用本地的环境先试了一下,也方便给出截图。这里我用的JFrog的Artifactory的试用版。
关于python打包可以看上一篇文章:打包自己的python代码
先用邮箱申请一个trial的版本,然后按照官方说明用docker先快速启动了环境:https://jfrog.com/artifactory/install/
docker volume create artifactory-data
docker pull releases-docker.jfrog.io/jfrog/artifactory-pro:latest
docker run -d --name artifactory -p 8082:8082 -p 8081:8081 -v artifactory-data:/var/opt/jfrog/artifactory releases-docker.jfrog.io/jfrog/artifactory-pro:latest
运行完docker命令后,用浏览器打开http://0.0.0.0:8082即可看到内容。
先要添加一个pypi local的repository
添加后会看到pypi-local
此时切换到artifact页面看到pypi了,点击set me up并切换到deploy的标签
在这里能看到一些配置信息,在个人账户主目录下添加一个.pypirc文件,添加如下内容,记得账户和密码要修改:
[distutils]
index-servers = local
[local]
repository: http://0.0.0.0:8081/artifactory/api/pypi/pypi-local
username: <USERNAME>
password: <PASSWORD>
安装一个包用于上传:
pip install twine
上传时可以用这个命令:
twine upload -r local /foder_path/dist/demo_package-1.0.0-py3-none-any.whl --config-file ~/.pypirc --verbose
此时会看到类似如下的console信息,然后再切换到页面刷新一下,就能看到python打的包已经上传上去了
Using configuration from /Users/bo/.pypirc
Uploading distributions to http://0.0.0.0:8081/artifactory/api/pypi/pypi-local
/folder_path/dist/demo_package-1.0.0-py3-none-any.whl (23.4 KB)
username set from config file
password set from config file
username: admin
password: <hidden>
Uploading demo_package-1.0.0-py3-none-any.whl
100%|██████████████████████████████████████████████████████████████████████████████████████████████| 30.8k/30.8k [00:00<00:00, 47.5kB/s]
此时便可在公司内部来安装这个包了。
如果是命令行可以直接运行:
pip install demo_package -i http://localhost:8081/artifactory/api/pypi/pypi-local/simple
但是如果安装的包定义过requirements,对其他的包有依赖,会提示错误'Could not find a version that satisfies the requirement',因为上面的命令是指定从pypi-local里查找,而其他公共的包并没有被上传其中。
此时就需要再添加两个pypi的repository,一个是remote,一个是virtual;remote用于请求公共的,virtual用于能同时访问local和remote。
上面的命令换成便可:
pip install demo_package -i http://localhost:8081/artifactory/api/pypi/pypi-virtual/simple
如果放在requirements中定义,则可以类似如下:
--index-url http://localhost:8081/artifactory/api/pypi/pypi-virtual/simple
demo_package==1.0.0
参考链接:
https://www.jfrog.com/confluence/display/JFROG/PyPI+Repositories
https://jfrog.com/screencast/setting-up-pypi-repository-in-minutes-with-jfrog-artifactory/