2010-01-27 66 views
8

作为构建自定义python的最后一步,我需要添加一个myproject.pthsetup.py:只安装一个pth文件?

目前我在一个Makefile这样做:

install: 
     rm -f   ../../lib/python2.6/site-packages/myproject.pth 
     cp myproject.pth ../../lib/python2.6/site-packages/myproject.pth 

,但我想在一个setup.py封装此。不幸的是,setup.py文件似乎并没有涵盖这个微不足道的情况!任何帮助赞赏。我试过,但它不工作:

from setuptools import setup 
setup(
    packages=['mypackage_pth'], 
    package_dir={'mypackage_pth': '.'}, 
    package_data={'mypackage_pth': ['mypackage.pth']}, 
) 
+0

如果您知道.pth文件的新位置,则可以在安装(...)函数后手动将其复制。例如使用shutil模块。 *编辑:*哦..这个问题是一岁。 – svenwltr 2011-02-04 21:55:05

回答

5

您正在寻找的data_files参数设置:

from distutils import sysconfig 
site_packages_path = sysconfig.get_python_lib() 

setup(..., 
    data_files=[(site_packages_path, ["mypackage.pth"])] 
) 
+0

我错过的关键是'get_python_lib()'。伟大的提示! – bukzor 2013-11-06 03:19:23

+0

这不适合我。路径配置文件('* .pth')被复制到一个包中,而不是'site-packages'。你知道什么可能会出错吗? – astronaut 2014-01-09 14:13:55

+0

你的案例中的'site_packages_path',@astronaut是什么? – stderr 2014-01-09 17:18:17

1

从标准错误的答案改编。不知道你是否假设做到这一点,但它的工作原理。

from distutils import sysconfig 
site_packages_path = sysconfig.get_python_lib() 

import shutil 
shutil.copy('mypackage.pth', site_packages_path) 

setup(...)