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
billgreen1
V2EX  ›  Python

开发 python 程序包的最佳实践是什么?

  •  
  •   billgreen1 · 2015-10-05 21:24:19 +08:00 · 2522 次点击
    这是一个创建于 3119 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我之前就是在 home 下面加个 dev ,里面是 project1 , project2 之类的。
    但是现在遇到了问题,有些项目是从 github 里面 fork 的,有些项目需要依赖特定版本的包。这会『污染』我系统的 site-packages 。然后有些项目的加载包得方式是 from .package1 import XX,我运行的时候说 can not import XXX

    后来了解到有 virtualenv ,还有 distribute , setuptools ,但是每个项目设置一遍也比较麻烦。
    所以想问下,你们平时开发包时,都怎么做的?

    我心里想的理想方式是:
    1.如果是自己开发一个新的包,运行一个命令,它能把文件夹结构、 virtualenv 设置好。
    2.如果是从 github 下载的项目,它能够根据文件夹结构,自动设置 virtualenv 。
    5 条回复    2015-10-07 10:40:30 +08:00
    cxbig
        1
    cxbig  
       2015-10-05 22:31:33 +08:00
    没有什么“最佳”,自己去实现一个功能,开源它,不断完善。
    raptor
        2
    raptor  
       2015-10-05 22:48:59 +08:00
    virtualenv 肯定要自己创建的,但是初始化的话可以用 pip -r requirements.txt ,当然前提是你自己把依赖写到 requirements.txt 里。
    初始化一个包的话可以用 paster
    adrianzhang
        3
    adrianzhang  
       2015-10-05 22:50:08 +08:00
    第一个需求, Django 这样的框架有功能,但是 Virtualenv 还需要自己设。
    第二个需求,目前都是使用 Docker 了。
    综合一下,第一个需求可以使用类框架功能+Docker 来实现。
    hujianxin
        4
    hujianxin  
       2015-10-06 23:44:11 +08:00 via iPhone
    可以试试 pyenv+pyenv-virtualenv
    Feiox
        5
    Feiox  
       2015-10-07 10:40:30 +08:00
    你可以去看一本书《 Python 开发实战》~ 会很有帮助的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2932 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:53 · PVG 10:53 · LAX 19:53 · JFK 22:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.