今天在用setup.py安装我们项目代码的时候,发现在安装依赖包的时候,连接一直被墙了。
看到log输出是从https://pypi.python.org/simple/下载包的。
我想修改成douban的源。于是找了一下怎么设置源。
找到最多的是这个例子,首先我是在~/.pip/pip.conf里面写了
~/.pip/pip.conf
1 2 |
[global] index-url = http://pypi.douban.com/simple |
发现用pip安装东西,确实是从douban的源下载的,不过使用setup.py安装的时候,还是从默认的pypi.python.org下载的。
看来需要的是distutils的配置。找了一下,发现是可以通过~/.pydistutils.cfg来配置distutils的源1。如下:
~/.pydistutils.cfg
1 2 |
[easy_install] index_url = http://pypi.douban.com/simple |
然后就可以在setup.py安装依赖的时候使用豆瓣源了。
探索setup.py
为啥读的是
~/.pydistutils.cfg这个文件呢?
于是我决定去distutils源码的目录围观一下,grep pydistutils.cfg *后发现dist.py里面有个函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
def find_config_files(self): """Find as many configuration files as should be processed for this platform, and return a list of filenames in the order in which they should be parsed. The filenames returned are guaranteed to exist (modulo nasty race conditions). There are three possible config files: distutils.cfg in the Distutils installation directory (ie. where the top-level Distutils __inst__.py file lives), a file in the user's home directory named .pydistutils.cfg on Unix and pydistutils.cfg on Windows/Mac; and setup.cfg in the current directory. The file in the user's home directory can be disabled with the --no-user-cfg option. """ files = [] check_environ() # Where to look for the system-wide Distutils config file sys_dir = os.path.dirname(sys.modules['distutils'].__file__) # Look for the system config file sys_file = os.path.join(sys_dir, "distutils.cfg") if os.path.isfile(sys_file): files.append(sys_file) # What to call the per-user config file if os.name == 'posix': user_filename = ".pydistutils.cfg" else: user_filename = "pydistutils.cfg" # And look for the user config file if self.want_user_cfg: user_file = os.path.join(os.path.expanduser('~'), user_filename) if os.path.isfile(user_file): files.append(user_file) # All platforms support local setup.cfg local_file = "setup.cfg" if os.path.isfile(local_file): files.append(local_file) |
这里有写有加载啥,所以我们直接在setup.py的同目录放置一个setup.cfg,也可以达到同样的效果。
setup.cfg
1 2 |
[easy_install] index_url = http://pypi.douban.com/simple |
结
加上配置后python setup.py install安装的时候,依赖就会从douban的源下载了。
用setup.cfg的好处是,这样源的配置就可以跟着源码走了。以后在其他机器上面安装的时候也可以用到douban的源。
PermaLink:
http://everet.org/2014/02/python-pypi-source.html
Tags:
Python
由 udpwork.com 聚合
|
评论: 0
|
要! 要! 即刻! Now!