V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
IVeverKB
V2EX  ›  Python

如何将整个 django 项目打包上传至 pypi,再从 pypi 上 pip 下载使用

  •  
  •   IVeverKB · 2021-01-27 16:50:41 +08:00 · 2131 次点击
    这是一个创建于 1400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新手,对 pypi 概念其实不是特别理解,只知道用 pip 下载 python 包用。网上查找这方面比较多的也是关于 django 里的 app 如何上传 pypi,但个人认为可以复用的 app 和 django 项目本质不太一样,app 和平常的 python 包比较像。所以想请教下是否有 v 友有相关经验的。。

    现在我的猜想是,使用打包工具将 django 项目打包成.tar.gz 这样子的包,上传至 pypi 。从 pypi 对这个包进行下载,解压,解压后的文件就跟源代码目录结构一致,可以直接 py manage.py runserver...这样运行了?

    第 1 条附言  ·  2021-01-27 17:25:33 +08:00
    因为有要求所以得按照这个要求来,不要问我为什么不怎么样怎么样做。。

    所以我可以把 pypi 当作一个纯上传下载文件的服务器吗,至于上传下载的是什么内容其实比较随意?
    如果能更多的说一下 pypi 的上传下载安装原理我会更感谢,谢谢谢谢
    20 条回复    2021-01-27 18:10:33 +08:00
    jdhao
        1
    jdhao  
       2021-01-27 17:00:49 +08:00 via Android
    自己的项目为啥要传到 pypi,如果只是自己用,直接放 github 不就行了?
    IVeverKB
        2
    IVeverKB  
    OP
       2021-01-27 17:06:18 +08:00
    @jdhao #1
    之后这个项目要放在服务器端 docker 里运行,要求就是用 pip 下载。可能对那个环境来说 pip 更方便吧?
    felinx
        3
    felinx  
       2021-01-27 17:06:58 +08:00   ❤️ 1
    私有项目放哪不好要放 pypi
    jdhao
        4
    jdhao  
       2021-01-27 17:08:34 +08:00
    @IVeverKB git clone 不香吗,感觉用 pip 管理源码很奇怪。。
    IVeverKB
        5
    IVeverKB  
    OP
       2021-01-27 17:09:11 +08:00
    @felinx #3
    之后会建个私有的 pypi server 的,但流程跟 pypi 一样。。
    ruanimal
        6
    ruanimal  
       2021-01-27 17:09:51 +08:00
    直接打包就好了啊,为啥要上传是 pypi,放在内部的 git 不好吗,pip 可以直接安装 git 库的
    woshiaha
        7
    woshiaha  
       2021-01-27 17:10:27 +08:00
    没懂 用 docker 跑直接打成 docker 镜像不就行了吗
    IVeverKB
        8
    IVeverKB  
    OP
       2021-01-27 17:10:46 +08:00
    @jdhao #4
    也不是我定的呀。。
    CallMeReznov
        9
    CallMeReznov  
       2021-01-27 17:10:49 +08:00
    既然要放到 docker 里,直接打包成 image 不是更好吗?
    IVeverKB
        10
    IVeverKB  
    OP
       2021-01-27 17:12:34 +08:00
    @woshiaha #7
    镜像的 dockerfile 直接 pip 下载这个项目使用。。打成 docker 镜像那岂不是每次更新代码都要重打一遍
    IVeverKB
        11
    IVeverKB  
    OP
       2021-01-27 17:13:47 +08:00
    ?如果有人能真的回答我这个问题而不是告诉我我的问题有问题就好了
    okletswin
        12
    okletswin  
       2021-01-27 17:35:48 +08:00
    @IVeverKB 主要大家不愿意浪费时间学习如何做一件愚蠢的事再教给你
    IVeverKB
        13
    IVeverKB  
    OP
       2021-01-27 17:43:53 +08:00
    @okletswin #12
    I mean 我必须这么做,也不用浪费时间来告诉我可以不这么做的方法而已,并不是在抱怨。
    能得到回答就最好了,得不到也无所谓。
    jdhao
        14
    jdhao  
       2021-01-27 17:47:46 +08:00 via Android
    @IVeverKB 那你就看如何做一个 python 包并上传到 pypi 就行了
    gazagoal1
        15
    gazagoal1  
       2021-01-27 17:54:14 +08:00 via Android
    @IVeverKB
    django 依赖库有变化的话,在本地 build docker image 然后 push 到容器 repository(比如 AWS 的 ECR),到远端 pull 回来就行了。

    只是代码有变化,尤其开发阶段,直接挂载 django 的本地的 django 目录到 docker mage 里就可以了。代码更新本地 push to git,在服务器端,git pull 到服务器的本地目录,重启 docker 容器就可以了,不用重新 build 。
    IVeverKB
        16
    IVeverKB  
    OP
       2021-01-27 17:56:10 +08:00
    @jdhao #14
    嗯我的问题其实就是 python 包和 django 项目在本质构成上是有区别的(毕竟 django 不是用 import...来使用的),pypi 会不会因为这个区别而导致 django 项目在这个流程中产生变化。
    我先试一下可不可以吧,感谢
    jdhao
        17
    jdhao  
       2021-01-27 18:01:36 +08:00 via Android
    @IVeverKB 满足 pypi 需求前提下,然后大不了进入这个库的目录,运行你想运行的代码就行了,和你原来没有任何区别。。
    felinx
        18
    felinx  
       2021-01-27 18:02:53 +08:00
    pypi 如何上传打包现成的文档说明很清楚,随便用啥搜索引擎都能搜到,这种基础问题不用社区自己完全能解决

    https://packaging.python.org/tutorials/packaging-projects/
    wh0syourda66y
        19
    wh0syourda66y  
       2021-01-27 18:05:55 +08:00
    什么奇怪需求都有,这样不行吗?

    ```
    pip install git+https://github.com/user/repo.git@branch
    ```
    IVeverKB
        20
    IVeverKB  
    OP
       2021-01-27 18:10:33 +08:00
    @jdhao #17
    @felinx #18
    谢谢现在完全明白了。
    非常感谢。主要之前一直停留在 pip 只能安装 python 包了,没走出这个逻辑。以后会科学用社区的 QAQ
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4167 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 10:17 · PVG 18:17 · LAX 02:17 · JFK 05:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.