Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pywin32与VirtualEnvironment一起使用,而不必包括主机环境';s站点包文件夹?_Python_Winapi_Virtualenv_Pyinstaller - Fatal编程技术网

Python 如何将pywin32与VirtualEnvironment一起使用,而不必包括主机环境';s站点包文件夹?

Python 如何将pywin32与VirtualEnvironment一起使用,而不必包括主机环境';s站点包文件夹?,python,winapi,virtualenv,pyinstaller,Python,Winapi,Virtualenv,Pyinstaller,我在Python2.6下工作,这只是部分支持,因为MS使用manifest nonense创建的混乱现在影响Python,因为它现在是MSVC8编译的 问题在于,清单嵌入支持依赖于扩展来构建,这是一个痛苦的过程,因为在我创建时,如果不包括主机的site packages文件夹(这有点违背构建环境中的观点),我无法找到安装所需扩展的方法,以便PyInstaller可以访问这些扩展 有人找到了解决这个问题的办法吗 好吧,既然我必须找到前进的道路,我就即兴发挥。我已经在内部创建了一个git存储库,其中

我在Python2.6下工作,这只是部分支持,因为MS使用manifest nonense创建的混乱现在影响Python,因为它现在是MSVC8编译的

问题在于,清单嵌入支持依赖于扩展来构建,这是一个痛苦的过程,因为在我创建时,如果不包括主机的site packages文件夹(这有点违背构建环境中的观点),我无法找到安装所需扩展的方法,以便PyInstaller可以访问这些扩展


有人找到了解决这个问题的办法吗

好吧,既然我必须找到前进的道路,我就即兴发挥。我已经在内部创建了一个git存储库,其中包含一个经过黑客攻击的pywin32版本,该版本将使用标准的
setup.py
脚本安装在virtualenv中。为了使它正常工作,我做了很多修改,但我设法让它加载,依赖代码现在可以按我需要的方式工作了。如果人们认为这对社区有好处,请发表评论:如果我得到足够的信息,我会尝试在我的github帐户上添加一些内容。

我发现(现在是一个死链接),它提供了以下解决方案:

  • 浏览所需exe的URL
  • 激活你的虚拟电视
  • 运行
    easy\u安装http://PATH.TO/EXE/DOWNLOAD
  • 这适用于setuptools的现代版本(大约2014年2月,tovmeod在评论中报告)


    如果您使用的是旧版本的setuptools(或将其分发并合并回setuptools),则可能会收到以下错误消息:

    错误:c:\users\blah\appdata\local\temp\easy\u install-ibkzv7\pywin32-214.win32-py2.6.exe不是有效的distutils Windows.exe

    在这种情况下:

  • 自己下载exe
  • 激活你的虚拟电视
  • 运行
    easy\u安装下载的\u FILE.exe

  • 我很希望尝试“pip安装”而不是“easy_安装”,但这不起作用,而且可能永远不会起作用(需要引用)


    最后,我找到了一个解决方案,但尚未测试该解决方案:

    通过将pywin32.pth文件复制到我的virtualenv站点包中解决了这个问题 并编辑文件以指向路径


    如果其他选项对您不起作用,也许这会起作用?

    这可能比上一个答案有所改进,因为我已经在多台机器的沙盒上成功安装了pywin32,而没有任何特定的“黑客”:

    在以下环境下进行测试:

    • 视窗7
    • 吉特
    • 使用virtualenv的python 2.7.10
    • VS2008。它可能也可以用(但我还没有测试过)
    编辑:暂时将其删除,似乎安装仍存在一些问题…

    我对整个情况感到相当厌倦,只是创建了一组经过转换的轮子(“轮子转换”)。我会尽量在最近的版本中维护它们,但如果有任何问题,一定要大声喊叫

    使用pip并指向与您的版本和体系结构匹配的包,可以轻松完成安装。例如,对于Python 3.5/amd64:

    pip安装


    警告:--upgrade进程当前失败,因为卸载过程本身无法清理(清理win32api.pyd时拒绝访问)-这仅在删除临时目录时发生,临时目录可以手动删除。最简单的方法是卸载并重新安装,而不是升级,然后手动删除临时文件夹。

    对于Python 2.7或3.x,请使用


    pip安装pypiwin32

    具体来说,下载pywin32.exe安装程序,然后在.exe文件上执行
    easy\u install-Z
    -Z
    可能不是必需的,但我总是这么做。@KevinHorn:不,你说得对,-Z不是必需的,我只是试过而已。谢谢使用“简易安装”,在内部工作良好virtualenv@tovmeod这是一个很好的观点,现在Distribute和setuptools已经合并了,这应该很神奇:)我会更新答案。我意识到这是一篇比较老的文章,而且我很少发表这样的文章。。。。但是,我必须说谢谢@d3vid我有一个x64-Win10安装程序,由于愚蠢的注册表错误,我无法安装pywin32。谢谢谢谢。我很想看看那份回购协议。你能至少列出你在回购协议中包含的文件吗?这是一个糟糕的、反社区的回答,而且拥有33k+的声誉,你应该知道得更清楚。“被接受”的答案来自OP,他们说,“没关系,所有帮助过我的人,所有通过谷歌来到这里的人,我都修好了,但我太忙了,没时间告诉你怎么做。”我不讨厌,因为我已经去过那里了。我只是想说出来,因为我希望有人能有礼貌地说出来。这似乎起到了作用,因为它让我克服了错误
    找不到满足pywin32要求的版本(从版本:)
    ,这是通过简单的
    pip安装pywin32
    得到的。但是,现在我得到了
    ImportError:DLL加载失败:找不到指定的模块。
    即使我在我的
    sys.path中看到了
    win32
    。有什么想法吗?
    $ virtualenv sandbox
    $ sandbox\scripts\activate
    (sandbox) $ git clone https://github.com/Travis-Sun/pywin32.git
    (sandbox) $ cd pywin32
    (sandbox) $ python setup.py install