2011-11-10 9 views
10

私は、64ビットのpython 2.7 pywin32モジュール(オペレーティングシステムはWindows 7 64ビット)でvirtualenvにインストールすることをお勧めします。
Sourceforgeにexeインストーラが見つかりました。pywin32をpython 2.7でvirtualenvにインストールするには?64ビット?

コマンドラインでeasy_installerを実行すると、最初はすべてうまくいっていますが、すぐに私は奇妙な動作をします:pywin32-216.win-amd64-py2.7はpywin32-216-py2.7-win32.eggを実行してインストールしますエラーで失敗します。

No local packages or download links found for pywin32==216 
Best match: None 

そしてここでは、私の完全なログです:

(sandbox_virtenv) D:\test\py2exe_test>easy_install http://sourceforge.net/projects/pywin32/files/pywin32/Build216/pywin32-216.win-amd64-py2.7.exe 
Downloading http://sourceforge.net/projects/pywin32/files/pywin32/Build216/pywin32-216.win-amd64-py2.7.exe 
Processing pywin32-216.win-amd64-py2.7.exe 
pywintypes: module references __file__ 
win32evtlogutil: module references __file__ 
win32serviceutil: module references __file__ 
win32timezone: module references __file__ 
Demos.win32rcparser_demo: module references __file__ 
Demos.security.sspi.validate_password: module references __file__ 
isapi.install: module references __file__ 
isapi.samples.advanced: module references __file__ 
isapi.samples.test: module references __file__ 
isapi.test.setup: module references __file__ 
pywin.framework.scriptutils: module references __file__ 
pywin.framework.startup: module references __path__ 
pywin.scintilla.config: module references __path__ 
pywin.scintilla.control: module references __file__ 
pywin.scintilla.IDLEenvironment: module references __file__ 
scripts.regsetup: module references __file__ 
scripts.setup_d: module references __file__ 
test.testall: module references __file__ 
test.test_clipboard: module references __file__ 
test.test_win32api: module references __file__ 
test.test_win32rcparser: module references __file__ 
D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\bdist_egg.py:422: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal 
    symbols = dict.fromkeys(iter_symbols(code)) 
test.test_win32trace: module references __file__ 
win32com.__init__: module references __path__ 
win32com.server.register: module references __file__ 
win32com.server.register: module references __path__ 
win32com.test.GenTestScripts: module references __path__ 
win32com.test.pippo_server: module references __file__ 
win32com.test.testall: module references __file__ 
win32com.test.testAXScript: module references __path__ 
win32com.test.testDictionary: module references __file__ 
win32com.test.testPippo: module references __file__ 
win32com.test.testPyComTest: module references __file__ 
win32com.test.testServers: module references __file__ 
win32com.test.util: module references __file__ 
win32comext.adsi.__init__: module references __path__ 
win32comext.authorization.__init__: module references __path__ 
win32comext.axcontrol.__init__: module references __path__ 
win32comext.axdebug.codecontainer: module references __file__ 
win32comext.axdebug.debugger: module references __file__ 
win32comext.axdebug.__init__: module references __path__ 
win32comext.axscript.__init__: module references __path__ 
win32comext.bits.__init__: module references __path__ 
win32comext.directsound.__init__: module references __path__ 
win32comext.directsound.test.ds_test: module references __file__ 
win32comext.internet.__init__: module references __path__ 
win32comext.mapi.__init__: module references __path__ 
win32comext.shell.__init__: module references __path__ 
win32comext.shell.demos.servers.empty_volume_cache: module references __file__ 
win32comext.shell.demos.servers.folder_view: module references __file__ 
win32comext.taskscheduler.__init__: module references __path__ 
creating 'c:\users\antp~1.kyi\appdata\local\temp\easy_install-kclmxk\pywin32-216-py2.7-win32.egg' and adding 'c:\users\antp~1.kyi\appdata\local\temp\easy_install-kclmxk\pywin32-216-py2.7-win32.egg.tmp' to it 
creating d:\test\sandbox_virtenv\lib\site-packages\pywin32-216-py2.7-win32.egg 
Extracting pywin32-216-py2.7-win32.egg to d:\test\sandbox_virtenv\lib\site-packages 
Adding pywin32 216 to easy-install.pth file 
Installing pywin32_postinstall.py script to D:\test\sandbox_virtenv\Scripts 
Installing pywin32_postinstall.pyc script to D:\test\sandbox_virtenv\Scripts 
Installing pywin32_testall.py script to D:\test\sandbox_virtenv\Scripts 
Installing pywin32_testall.pyc script to D:\test\sandbox_virtenv\Scripts 

Installed d:\test\sandbox_virtenv\lib\site-packages\pywin32-216-py2.7-win32.egg 
Processing dependencies for pywin32==216 
Searching for pywin32==216 
Reading http://pypi.python.org/simple/pywin32/ 
Reading http://sf.net/projects/pywin32 
Reading https://sourceforge.net/projects/pywin32/files/pywin32/ 
Reading http://sourceforge.net/project/showfiles.php?group_id=78018 
No local packages or download links found for pywin32==216 
Best match: None 
Traceback (most recent call last): 
    File "D:\test\sandbox_virtenv\Scripts\easy_install-script.py", line 8, in <module> 
    load_entry_point('setuptools==0.6c11', 'console_scripts', 'easy_install')() 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 1712, in main 
    with_ei_usage(lambda: 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 1700, in with_ei_usage 
    return f() 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 1716, in <lambda> 
    distclass=DistributionWithoutHelpCommands, **kw 
    File "c:\Python27\Lib\distutils\core.py", line 152, in setup 
    dist.run_commands() 
    File "c:\Python27\Lib\distutils\dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "c:\Python27\Lib\distutils\dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 211, in run 
    self.easy_install(spec, not self.no_deps) 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 422, in easy_install 
    return self.install_item(None, download, tmpdir, deps, True) 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 478, in install_item 
    self.process_distribution(spec, dist, deps) 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 519, in process_distribution 
    [requirement], self.local_index, self.easy_install 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\pkg_resources.py", line 563, in resolve 
    dist = best[req.key] = env.best_match(req, self, installer) 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\pkg_resources.py", line 799, in best_match 
    return self.obtain(req, installer) # try and download/install 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\pkg_resources.py", line 811, in obtain 
    return installer(requirement) 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\command\easy_install.py", line 434, in easy_install 
    self.local_index 
    File "D:\test\sandbox_virtenv\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\package_index.py", line 475, in fetch_distribution 
    return dist.clone(location=self.download(dist.location, tmpdir)) 
AttributeError: 'NoneType' object has no attribute 'clone' 

(sandbox_virtenv) D:\test\py2exe_test> 

今私は、PythonのWin32APIからインポートすることができ、それが

(sandbox_virtenv) D:\test\py2exe_test>python 
Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import win32api 
>>> 
かなり混乱します

あなたがここに何かを見つけたら、私に尋ねてください。あなたのアドバイスをありがとう。

答えて

9

私はこれを理解しましたが、そのプロセスは面白くありません。

PyWin32インストーラと3つの問題があります。

  1. は、それはあなたのpythonは、レジストリのうち、インストール場所を読み込みます。
  2. は、あなたのlibディレクトリは、あなたが64ビットのpython 2を実行している場合、それはとても%windir%\ system32を

に3つのDLLをダンプpython.exe

  • を含むディレクトリの子であることを前提としています。64ビットWindows 7または32 32にして、仮想環境はC:\スクラッチの\ ENV1 \プロセスは次のようになります。

    1. Cからコピーpython.exeとpythonw.exe:\スクラッチの\ ENV1 \スクリプトをc:¥scratch¥env1
    2. レジストリキーHKLM¥SOFTWARE¥Python¥PythonCore¥2.7¥InstallPath¥の値を "(デフォルト)"に変更して "c:\ scratch \ env1 \"に設定します
    3. 仮想環境をアクティブにしたコマンドラインから、installer.exeを直接実行してPyWin32をインストールします。 easy_installを使用しないでください。
    4. 移動pythoncom27.dll、pywintypes27.dllとpythoncomloader27.dll%からWINDIR \ \スクラッチの\ ENV1:元の値
    5. Cから削除python.exeとpythonw.exeにINSTALLPATHレジストリキーを設定し
    6. %\ SYSTEM32 \をC:\スクラッチの\ ENV1の\(python27.dllを移動しないか、あなたはそれを後悔)

    これは屋外に設置pywin32を持たずに、仮想環境でジャンゴ-MSSQLを実行するのに十分に機能します仮想環境の

  • +0

    ステップ3でコマンドラインをAdministratorとして起動する必要があります。そうでない場合は、PyWin32はエラーで終了します。 –

    +0

    eclipseでodooデバッグを起動しようとしたときに、ステップ6を実行するときに 'import win32service ws ImportError no module found'私はこのステップをしてはならないと思う。 –

    2

    残念ながら、Windows上の64ビットPythonのサポートは、32ビットバージョンよりも比較的貧弱です。これはPythonコミュニティの欠点ではありませんが、64ビットWindows用のフリーコンパイラを入手するのが比較的難しいです。

    64ビットバージョンのPythonをインストールした場合は、64ビット用のパッケージも使用する必要があります。いくつかのシンプルなPythonパッケージ(純粋なPythonで書かれ、外部/ Cライブラリを必要としないもの)は、setuptools/easy_install/virtualenvを使って通常どおりにインストールされます。しかし、64bitパッケージの多くは、virtualenvにインストールすると壊れてしまい、インストーラが必要になります。

    幸いなことに、人気パッケージhereの64ビットプリコンパイルインストーラが見つかります。最初にパッケージを試してください。インストーラはPythonのグローバル/メインインストールを対象とするため、virtualenvで隔離されません。ただし、これらは、非公式のビルドです:あなたの便宜のために無料で提供されていますので、何かが失敗した場合(またはヘルプが必要な場合)、プロバイダを訴えないでください。

    +0

    応答をありがとうへのリンクです。私はそれをeasy_installerに渡すと、そのインストーラも同じエラーを引き起こします。悲しい。 – tony

    +0

    .exeインストーラを使用/起動します(クリック - クリックプロセス)。easy_installは使用しないでください。私はビルド216 /最近のビルドについてはわかりませんが、問題なく数ヶ月前のように、Windows 7のPython 2.7 64bitに64bit pywin32をインストールすることができました。それでも動作しない場合は教えてください...他の人が同じ問題を抱えている場合はおそらくバグトラッカーを見る必要があります。 – shimofuri

    +0

    いいえ、追加ツールなしでインストールがうまく動作しますが、私はこの拡張機能だけを仮想環境で探していました。私はグローバルなpythonインストールでそれを使いたくありません。 – tony

    4

    最新のvirtualenv-1.7.1.2では、--distributeフラグを付けてvirtualenvを作成してみてください。私はフラグを追加することによってあなたが持っていたのとまったく同じ問題を解決することができました。

    は、関連のノートで、別のマシン(同じOSは、Windows Server 2008 R2)上で、私はeasy_installを実行するたびにそうでない場合は、新しいコマンドプロンプトを開いてポップアップ表示されます、なし--distributeフラグをvirtualenvのを作成する必要がありました。

    WindowsのVirtualenvは、暗い芸術のようです。

    +0

    '--distribute'フラグは非推奨で、今は何もしません。 – qris

    2

    これは古い質問ですが、最近この問題を遭遇し、私がこの作業を行うために行ったことを共有したいと思います。私は窓でのpython kerberosの実装を探していました。そしてpywin32を使用するkerbeors_sspiが見つかりました。 これはpipでインストールされますが、pywin32はvirtualenvの中にpipを使ってインストールすることはできません。

    私はkerberos_sspiライブラリにパッチを当てて、Glyphとel(twisted creator BTW)によってパッケージ化されたホイールであるpypiwin32を使用しました。そして今、これらのすべてがうまくいっていますが、COMのものにアクセスしたいのであれば、pywin32を手動でインストールする必要があります。これは、システムに登録する必要があるからです。ここで

    pypiwin32 index

    乾杯、

    関連する問題