今天在用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!