54

私はPython2.6でPyInstallerを使用していますが、これは、MSがMSVC8でコンパイルされているため、Pythonに影響を与えるマニフェストnonenseでMSが作成した混乱のため、部分的にしかサポートされていません。

問題は、マニフェスト埋め込みサポートがビルドのためにpywin32拡張機能に依存していることです。これは、 virtualenvを作成するときにホストのsite-packagesフォルダーを含めないと、方法が見つからないためです。必要な拡張機能をインストールして、PyInstallerからアクセスできるようにします。

誰かがこの問題の解決策を見つけましたか?

4

5 に答える 5

77

次の解決策を提供するhttp://old.nabble.com/Windows:-virtualenv-and-pywin32--td27658201.html (現在はリンク切れ)を見つけました。

  1. 必要なexeのURLについては、http://sourceforge.net/projects/pywin32/files/を参照してください。
  2. virtualenvをアクティブ化します
  3. 走るeasy_install http://PATH.TO/EXE/DOWNLOAD

これは、最新バージョンのsetuptoolsで機能します(2014年2月頃、コメントでtovmeodによって報告されています)。


古いバージョンのsetuptoolsを使用している場合(またはそれをsetuptoolsにマージして配布している場合)、次のエラーメッセージが表示される場合があります。

エラー:c:\ users \ blah \ appdata \ local \ temp \ easy_install-ibkzv7 \ pywin32-214.win32-py2.6.exe is not a valid distutils Windows .exe

その場合:

  1. 自分でexeをダウンロードする
  2. virtualenvをアクティブ化します
  3. 走るeasy_install DOWNLOADED_FILE.exe

「easy_install」ではなく「pipinstall」を試してみましたが、これは機能せず、おそらく機能しませんでした(引用が必要です)。


最後に、 http: //www.mail-archive.com/python-list@python.org/msg272040.htmlで解決策を見つけましたが、テストしていません。

pywin32.pthファイルをvirtualenvサイトパッケージにコピーし、パスを指すようにファイルを編集することで、これを解決しました。

他のオプションがうまくいかない場合、多分これはうまくいくでしょうか?

于 2010-03-23T14:09:21.793 に答える
13

Python 2.7または3.xの場合は、pypiwin32を使用します。

pip install pypiwin32

于 2016-06-30T11:14:20.073 に答える
4

OK、まあ、私は即興で前進する方法を見つけなければならなかったので。私は、標準setup.pyスクリプトを使用してvirtualenv内にインストールするpywin32のハッキングされたバージョンを使用してgitリポジトリを内部的に作成しました。それを正しく機能させるには多くの手間がかかりましたが、私はそれをロードすることができ、依存コードは必要に応じて機能するようになりました。これがコミュニティにとって有益であると人々が感じた場合は、コメントを投稿してください。十分に得られたら、githubアカウントに何かを載せてみます。

于 2009-12-02T08:13:13.430 に答える
0

特定の「ハック」なしでいくつかのマシンのサンドボックスにpywin32を正常にインストールしたので、これは以前の回答から改善された可能性があります。

$ virtualenv sandbox
$ sandbox\scripts\activate
(sandbox) $ git clone https://github.com/Travis-Sun/pywin32.git
(sandbox) $ cd pywin32
(sandbox) $ python setup.py install

次の環境でテスト済み:

于 2015-11-18T10:53:44.827 に答える
0

編集:今のところこれをスクラッチします、まだインストールにいくつかの問題があるようです...

私は状況全体にかなり飽きて、変換されたホイールのセット( "wheel convert <.exe>")を作成しました。最新のビルドのためにそれらを維持しようとしますが、問題がある場合は叫んでください。

https://tr00st.co.uk/python/wheel/pywin32/

インストールは、pipを使用して、バージョンとアーキテクチャに一致するパッケージをポイントすることで簡単に実行できます。たとえば、Python 3.5 /amd64の場合:

pipインストールhttps://tr00st.co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl

警告:-upgradeプロセスは現在失敗します。これは、アンインストール手順がそれ自体の後でクリーンアップできないためです(win32api.pydのクリーンアップ時にアクセスが拒否されました)-これは、手動で削除できる一時ディレクトリを削除する場合のみです。これを回避する最も簡単な方法は、アップグレードする代わりにアンインストールして再インストールしてから、一時フォルダーを手動で削除することです。

于 2015-12-03T10:14:01.947 に答える