小编Chr*_* B.的帖子

如何让我的setup.py使用我的文件的相对路径?

我正在尝试用它构建一个Python发行版distutils.不幸的是,我的目录结构如下所示:

/code
    /mypackage
        __init__.py
        file1.py
        file2.py
        /subpackage
            __init__.py
    /build
        setup.py

这是我的setup.py档案:

from distutils.core import setup

setup(
    name = 'MyPackage',
    description = 'This is my package',
    packages = ['mypackage', 'mypackage.subpackage'], 
    package_dir = { 'mypackage' : '../mypackage' }, 
    version = '1',
    url = 'http://www.mypackage.org/',
    author = 'Me',
    author_email = 'me@here.com',
) 
Run Code Online (Sandbox Code Playgroud)

当我python setup.py sdist正确运行它时会生成清单文件,但不会在分发中包含我的源文件.显然,它创建了一个包含源文件的目录(即mypackage1),然后复制每个源文件mypackage1/../mypackage,将它们放在分发之外.

如何在不强制我的目录结构符合distutils预期的情况下更正此问题?

python distutils

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

如何在Python中的Windows上创建命名临时文件?

我有一个Python程序需要创建一个命名的临时文件,该程序将在程序过程中打开和关闭几次,并且应该在程序退出时删除.不幸的是,tempfile似乎没有任何选项可行:

  • TemporaryFile 没有可见的名字
  • NamedTemporaryFile创建一个类文件对象.我只需要一个文件名.我已经尝试关闭它返回的对象(设置后delete = False),但是当我稍后尝试打开文件时出现流错误.
  • SpooledTemporaryFile 没有可见的名字
  • mkstemp返回打开的文件对象和名称; 它不保证程序退出时删除文件
  • mktemp 返回文件名,但不保证程序退出时删除文件

我尝试在上下文管理器中使用mktemp1,如下所示:

def get_temp_file(suffix):
    class TempFile(object):
        def __init__(self):
            self.name = tempfile.mktemp(suffix = '.test')

        def __enter__(self):
            return self

        def __exit__(self, ex_type, ex_value, ex_tb):
            if os.path.exists(self.name):
                try:
                    os.remove(self.name)
                except:
                    print sys.exc_info()

     return TempFile()
Run Code Online (Sandbox Code Playgroud)

......但这给了我一个WindowsError(32, 'The process cannot access the file because it is being used by another process').文件名由我的程序生成的进程使用,即使我确保在退出之前进程完成,但它似乎有一个不受我控制的竞争条件.

处理这个问题的最佳方法是什么?

1我不需要担心这里的安全问题; 这是测试模块的一部分,所以最邪恶的人可能会导致我们的单元测试虚假失败.惊恐的事件!

python windows temporary-files

11
推荐指数
2
解决办法
5031
查看次数

我如何修复PyDev"方法应该有自己作为第一个参数"错误

我在Eclipse中使用PyDev开发Python,我的一些代码在代码分析工具中生成错误.特别:

class Group(object):
    def key(self, k):
        class Subkey(object):
            def __enter__(s):
                self._settings.beginGroup(k)
                return self

            def __exit__(s, type, value, tb):
                self._settings.endGroup()

         return Subkey()
Run Code Online (Sandbox Code Playgroud)

给我一个"Method '__enter__- group' should have self as first parameter"错误,以及类似的错误__exit__.有没有办法解决这个问题而不分配self给另一个变量并在其他方法签名中重用该变量?

python code-analysis pydev

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

如何在Python中编写原始二进制数据?

我有一个Python程序,用于存储数据并将数据写入文件.数据是原始二进制数据,内部存储为str.我是通过utf-8编解码器写出来的.但是,我进入UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 25: character maps to <undefined>cp1252.py文件.

这看起来像Python试图使用默认代码页来解释数据.不过,这并不一个默认的代码页.这就是我使用的原因str,而不是unicode.

我想我的问题是:

  • 如何在Python中用内存表示原始二进制数据?
  • 当我通过编解码器写出原始二进制数据时,如何对其进行编码/取消编码?

python string codec

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

如何在Jenkins中运行失败任务?

我有一个Jenkins的工作,打算做以下事情:

  1. 构建项目并将其部署到测试服务器
  2. 运行测试
  3. 如果测试失败,请将服务器回滚到以前的版本
  4. 如果测试成功,请更新源代码管理系统中的版本

因为我们有一个测试服务器,所以我们需要确保Jenkins一次只运行这个作业的单个版本.不幸的是,我们似乎无法找到一种方式来运行失败的作业,并从下游作业运行时执行保持上游工作.

是否有捷径可寻?有没有更好的办法?

jenkins

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

如何读取SAS数据集?

我有很多SAS格式的文件,我希望能够在SAS之外的程序中读取它们.除了安装基础SAS系统之外,我什么都没有.我可以手动转换每一个,但我想要一种自动执行的方法.

sas

9
推荐指数
2
解决办法
2万
查看次数

Python:调用方法'直接'实例化对象?

我是Python的新手,在单元测试我的对象上的一些方法时,我发现了一些"怪异"的东西.

class Ape(object):
    def __init__(self):
        print 'ooook'

    def say(self, s):
        print s

def main():
    Ape().say('eeek')

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我写了这个小例子来说明我感到困惑的地方.如果你做Ape().说('eeek')这实际上是实例化一个Ape对象并运行init方法吗?我以为它不会,但我有一些奇怪的副作用,所以现在我在想它呢?

python

9
推荐指数
2
解决办法
4243
查看次数

如何使用QListWidget响应内部拖放操作?

我有一个Qt4应用程序(使用PyQt绑定),其中包含a QListWidget,初始化如下:

class MyList(QtGui.QListWidget):
    def __init__(self):
        QtGui.QListWidget.__init__(self)
        self.setDragDropMode(self.InternalMove)
Run Code Online (Sandbox Code Playgroud)

我可以添加项目,这允许我拖放以重新排序列表.但是如何在用户重新排序列表时收到通知?我尝试dropMimeData(self, index, data, action)在类中添加一个方法,但它永远不会被调用.

qt qt4 pyqt pyqt4

8
推荐指数
3
解决办法
6465
查看次数

压缩编解码器如何在Python中工作?

我正在查询数据库并使用Python归档结果,我正在尝试在将数据写入日志文件时压缩数据.不过,我遇到了一些问题.

我的代码看起来像这样:

log_file = codecs.open(archive_file, 'w', 'bz2')
for id, f1, f2, f3 in cursor:
    log_file.write('%s %s %s %s\n' % (id, f1 or 'NULL', f2 or 'NULL', f3))
Run Code Online (Sandbox Code Playgroud)

但是,我的输出文件大小为1,409,780.bunzip2在文件上运行会生成一个大小为943,634的文件,并在其bzip2上运行会导致大小为217,275.换句话说,未压缩文件明显小于使用Python的bzip编解码器压缩的文件. 有没有办法解决这个问题,除了bzip2在命令行上运行?

我尝试了Python的gzip编解码器(将行更改为codecs.open(archive_file, 'a+', 'zip'))以查看它是否解决了问题.我仍然获得大文件,但是gzip: archive_file: not in gzip format当我尝试解压缩文件时也遇到错误. 那里发生了什么?


编辑:我原来在附加模式下打开文件,而不是写模式.虽然这可能是也可能不是问题,但如果文件以'w'模式打开,问题仍然存在.

python gzip python-2.x bzip2

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

有没有一种简单的方法可以将文件与.gitignore规则进行匹配?

我正在用Python写一个git pre-commit钩子,我想定义一个像.gitignore文件一样的黑名单,以便在处理文件之前检查文件。有没有一种简单的方法来检查是否根据一组.gitignore规则定义了文件?这些规则有点神秘,我宁愿不必重新执行它们。

python git gitignore

8
推荐指数
2
解决办法
631
查看次数