相关疑难解决方法(0)

我可以在virtualenvs中安装Python windows包吗?

Virtualenv非常棒:它让我可以保留许多不同的Python安装,这样不同项目的依赖关系就不会全部集中在一起.

但是,如果我想在Windows上安装一个打包为.exe安装程序的软件包,我如何指导它安装到virtualenv?例如,我有pycuda-0.94rc.win32-py2.6.exe.当我运行它时,它会检查注册表,并且只找到一个要安装的Python26,这是我的virtualenv所基于的常见的.

如何指导它安装到virtualenv?

python windows virtualenv

125
推荐指数
4
解决办法
3万
查看次数

如何将安装后脚本添加到easy_install/setuptools/distutils?

我希望能够在我的setup.py中添加一个钩子,它将在安装后运行(当easy_install'ing或者在进行python setup.py安装时).

在我的项目PySmell中,我有一些Vim和Emacs的支持文件.当用户以通常的方式安装PySmell时,这些文件将被复制到实际的egg中,并且用户必须将它们删除并将它们放在他的.vim或.emacs目录中.我想要的是询问用户,安装后,他希望复制这些文件的位置,甚至只是打印文件位置的消息以及他应该如何处理它们.

做这个的最好方式是什么?

谢谢

我的setup.py看起来像这样:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from setuptools import setup

version = __import__('pysmell.pysmell').pysmell.__version__

setup(
    name='pysmell',
    version = version,
    description = 'An autocompletion library for Python',
    author = 'Orestis Markou',
    author_email = 'orestis@orestis.gr',
    packages = ['pysmell'],
    entry_points = {
        'console_scripts': [ 'pysmell = pysmell.pysmell:main' ]
    },
    data_files = [
        ('vim', ['pysmell.vim']),
        ('emacs', ['pysmell.el']),
    ],
    include_package_data = True,
    keywords = 'vim autocomplete',
    url = 'http://code.google.com/p/pysmell',
    long_description =
"""\
PySmell is a python IDE …
Run Code Online (Sandbox Code Playgroud)

python distutils setuptools

32
推荐指数
1
解决办法
9470
查看次数

使用distutils/setuptools在安装后执行Python脚本

我正在尝试向Python distutils添加安装后任务,如如何使用简单的安装后脚本扩展distutils中所述?.该任务应该在已安装的lib目录中执行Python脚本.此脚本生成安装包所需的其他Python模块.

我的第一次尝试如下:

from distutils.core import setup
from distutils.command.install import install

class post_install(install):
    def run(self):
        install.run(self)
        from subprocess import call
        call(['python', 'scriptname.py'],
             cwd=self.install_lib + 'packagename')

setup(
 ...
 cmdclass={'install': post_install},
)
Run Code Online (Sandbox Code Playgroud)

这种方法有效,但据我所知,有两个不足之处:

  1. 如果用户使用的Python解释器不是拾取者PATH,则安装后脚本将使用不同的解释器执行,这可能会导致问题.
  2. 它对于干运行等是不安全的,我可以通过将其包装在一个函数中并使用它来解决它distutils.cmd.Command.execute.

我怎样才能改进我的解决方案?这样做有推荐的方法/最佳做法吗?如果可能的话,我想避免引入另一个依赖.

python install distutils setuptools post-install

29
推荐指数
1
解决办法
1万
查看次数