标签: distutils

如何使用distutils安装到特定的Python安装?

我有一台安装了Python 2.3,2.6和3.0的Windows机器,以及安装了Cygwin的2.5机器.我已经下载了pexpect包,但是当我运行"python setup.py install"时,它安装到2.6安装.

我怎么能安装到Cygwin Python安装或任何其他安装?

python install distutils

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

使用脚本中的包文件

如果我的Python包中有一个脚本,我怎么能让它从包中读取其他文件,因为__file__包含(例如)/usr/bin/myscript而不是/usr/lib/python3.3/site-packages/mypackage/myscript

(文件只是模板,而不是模块.)

python distutils package

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

Pybuilder - 非python文件未打包

我目前的项目是在 python 中。对于构建包生成 + 单元测试运行,我正在使用Pybuilder实用程序,它非常酷。我使用了车轮分布在其他系统中安装模块。

存在一个配置文件,应用程序从中读取某些设置。settings.ini 文件在以下路径中,

PROJECT-ROOT
     |---- src
            |-main
                |-python
                     |- foo
                         |- conf
                         |   |- settings.ini
                         |
                         |-test.py
                         |-access.py
Run Code Online (Sandbox Code Playgroud)

pybuilder 自动从 build.py 脚本创建 setup.py。问题是二进制轮分发没有打包非 python 文件(*.ini 文件)。在搜索 SO 帖子时,获得诸如在 MANIFEST.mf 中添加之类的信息将解决此问题。但是在添加的同时

 project._manifest_include_directory('foo/conf', ('*.ini',))
Run Code Online (Sandbox Code Playgroud)

它只foo/conf/settings.ini在 sdist 中更新,而不是在 bdist(wheel) 上更新。我希望轮文件在 conf/ 目录中包含 settings.ini。在谷歌上搜索,得到了添加的信息 package_data在 setup.py字段将解决此问题的信息。但是使用 Pybuilder 的 build.py,我无法成功执行此操作。

任何人都可以帮我解决这个问题吗?

distutils python-3.x pybuilder

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

distutils可以创建空的__init__.py文件吗?

如果我的所有__init__.py文件都是空的,我是否必须将它们存储到版本控制中,或者有没有办法在安装过程中distutils创建空__init__.py文件?

python version-control distutils

0
推荐指数
1
解决办法
1398
查看次数

这个`setup.py`出了什么问题?

我一直在setup.py努力做sdist正确的事情.我把它归结为此.我有以下目录结构:

my_package\
    my_subpackage\
        __init__.py
        deep_module.py
    __init__.py
    module.py
    setup.py
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的setup.py:

#!/usr/bin/env python

from distutils.core import setup
import distutils

setup(
    name='a',
    version='0.1',
    description='a',
    author='a',
    author_email='a@a.com',
    url='http://a.org',
    packages=['my_package','my_package.my_subpackage'],
    package_dir={'': '..'},
    license= "a",
    long_description = 'aaa',

)
Run Code Online (Sandbox Code Playgroud)

(这些'aaa'东西只是占位符.)

无论如何,当我这样做时,它可以正常工作setup.py install,但是当我尝试做的时候setup.py sdist,会发生一些奇怪的事情:

  1. MANIFEST创建一个文件.

  2. 在副本my_package中创建的文件夹现有的my_package文件夹(尽管它缺少一些安装相关的文件,我想的.)

  3. 一个dist文件夹在里面创建了一个zipfile,里面是一个带有包名的文件夹,但是在那个文件夹里面没有像我希望的整个包,只有两个文件,setup.py而且PKG-INFO.

我究竟做错了什么?我该如何sdist工作?

python distutils distribution

0
推荐指数
1
解决办法
1650
查看次数

setup.py不包含模块

setup.py包含它所在的同一目录中的模块,但是在site.packages目录和我添加到pythonpath的lib文件夹中省略了模块.

不要告诉我它不只是导入像python解释器这样的文件.它应该如果你命名它们.

programdir-->
programdir-->
datadir
program.py
functions.py
setup.py
Run Code Online (Sandbox Code Playgroud)

setup.py

from distutils.core import setup

setup(name = "program",
    version = "1.0",
    description = "a program",
    author = "me",
    author_email = "email@email.com",
    url = "http://www.url.com",
    py_modules = ["program", "functions", "tweepy", "anothermod", "webbrowser","" ],
    data_files  = [("data", ["data/intros.txt"])],
    long_description = """
    Descriptttttionnnn
    """
        )
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python distutils

0
推荐指数
1
解决办法
218
查看次数

Cython快速将二进制字符串转换为int数组

我有一个大型二进制数据文件,我想将其加载到 C 数组中以便快速访问。数据文件仅包含 4 字节整数序列。

我通过 pkgutil.get_data 函数获取数据,该函数返回一个二进制字符串。以下代码有效:

import pkgutil
import struct

cdef int data[32487834]

def load_data():
    global data
    py_data = pkgutil.get_data('my_module', 'my_data')
    for i in range(32487834):
        data[i] = <int>struct.unpack('i', py_data[4*i:4*(i+1)])[0]
    return 0

load_data()
Run Code Online (Sandbox Code Playgroud)

问题是这段代码非常慢。读取整个数据文件可能需要 7 或 8 秒。将文件直接读入 C 中的数组只需 1-2 秒,但我想使用 pkgutil.get_data 以便我的模块无论安装在何处都可以可靠地找到数据。

所以,我的问题是:最好的方法是什么?有没有办法直接将数据转换为整数数组,而不需要对 struct.unpack 进行所有调用?而且,作为第二个问题,有没有一种方法可以简单地获取指向数据的指针,以避免不必要地复制 120MB 的数据?

或者,有没有办法让 pkgutil 返回数据的文件路径而不是数据本身(在这种情况下,我可以使用 C 文件 IO 来快速读取文件。

编辑:

仅供记录,这是最终使用的代码(基于 Veedrac 的答案):

import pkgutil

from cpython cimport array
import array

cdef int[:] data

cdef void load_data():
    global data
    py_data = pkgutil.get_data('my_module', …
Run Code Online (Sandbox Code Playgroud)

python arrays distutils cython

0
推荐指数
1
解决办法
2390
查看次数