125

Virtualenv は素晴らしいです。さまざまなプロジェクトの依存関係がすべて共通の山にまとめられないように、多数の個別の Python インストールを保持できます。

しかし、.exe インストーラーとしてパッケージ化されたパッケージを Windows にインストールしたい場合、virtualenv にインストールするように指示するにはどうすればよいでしょうか? たとえば、pycuda-0.94rc.win32-py2.6.exe があります。実行すると、レジストリが調べられ、インストール先の Python26 が 1 つだけ見つかります。これは、virtualenv のベースとなっている一般的なものです。

virtualenvにインストールするように指示するにはどうすればよいですか?

4

6 に答える 6

201

はい、できます。あなたに必要なのは

easy_install binary_installer_built_with_distutils.exe

驚いた?distutils で作成された Windows 用のバイナリ インストーラーは、.exe と .zip を 1 つの .exe ファイルに結合しているようです。拡張子を .zip に変更して、有効な zip ファイルであることを確認します。私の質問への回答を読んだ後、これを発見しました Windows用のpsycopg2でバイナリの卵をどこでダウンロードできますか?

アップデート

Tritium21 が彼の回答で指摘したように、最近は easy_install の代わりに pip を使用する必要があります。pip は、distutils によって作成されたバイナリ パッケージをインストールできませんが、バイナリ パッケージを新しいwheel形式でインストールできます。最初にインストールする必要があるwheelパッケージを使用して、古い形式から新しい形式に変換できます。

于 2011-03-26T12:33:10.180 に答える
70

これはかなり古い質問であり、これからお話しするツールよりも前のものであることは承知していますが、Google のために、言及するのは良い考えだと思います。easy_install は、python パッケージングの黒い羊です。ピップの新しいホットさでそれを使用することを誰も認めたくありません. また、非標準の EXE インストーラー (誰かが distutils を使用する代わりに自分でインストーラーを構築し、インストール パスのレジストリをチェックしている) にはレジストリ トリックを実行するのが最適ですが、標準の EXE インストーラー用の Better Way(c) があります。 .

pip install wheel
wheel convert INSTALLER.EXE
pip install NEW_FILE_CREATED_IN_LAST_STEP.whl

この投稿の時点で最近導入されたホイール形式は、卵形式の代替品であり、ほぼ同じ役割を果たします。この形式は、pip (virtualenv に既にインストールされているツール) でもサポートされています。

何らかの理由pip install WHEELFILEで機能しない場合は、試してくださいwheel install WHEELFILE

于 2013-12-02T09:13:02.717 に答える
40

最終的にスクリプト ( http://effbot.org/zone/python-register.htm ) を適応させて、Python インストールをレジストリに登録しました。レジストリでPython を選択し、Windows インストーラーを実行してから、レジストリを元に戻すことができます。

# -*- encoding: utf-8 -*-
#
# script to register Python 2.0 or later for use with win32all
# and other extensions that require Python registry settings
#
# Adapted by Ned Batchelder from a script
# written by Joakim Löw for Secret Labs AB / PythonWare
#
# source:
# http://www.pythonware.com/products/works/articles/regpy20.htm

import sys

from _winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)

def RegisterPy():
    try:
        reg = OpenKey(HKEY_LOCAL_MACHINE, regpath)
    except EnvironmentError:
        try:
            reg = CreateKey(HKEY_LOCAL_MACHINE, regpath)
        except Exception, e:
            print "*** Unable to register: %s" % e
            return

    SetValue(reg, installkey, REG_SZ, installpath)
    SetValue(reg, pythonkey, REG_SZ, pythonpath)
    CloseKey(reg)
    print "--- Python %s at %s is now registered!" % (version, installpath)

if __name__ == "__main__":
    RegisterPy()

登録したい Python でこのスクリプトを実行すると、レジストリに入力されます。Windows 7 および Vista では、管理者権限が必要になることに注意してください。

于 2010-07-17T20:41:43.560 に答える
7

easy_install is able to install .exe packages as long as they were built using distutils' bdist_wininst target, which covers many popular packages. However, there are many others that aren't (wxPython is one that I've struggled with)

于 2010-07-18T08:52:40.080 に答える
0

の場合は.msi、を使用してコマンドラインオプションを指定できる場合がありますmsiexec。Pythonインストーラー自体は許可しますがTARGETDIR、distutilsがこれをディストリビューションインストーラーに組み込むかどうかはわかりません。

を使用している場合.exe、クリーンな方法はないと思います。1つのオプションは、7Zip(またはwinzipなど)などのプログラムを使用してexeの内容を直接抽出し、関連するフォルダーを仮想サイトパッケージフォルダーにコピーすることです。たとえば、「processing-0.5.2.win32-py2.5.exe」を抽出すると、virtualenvパスにコピーして実行時の問題なしに使用するフォルダ「PLATLIB\processing」が見つかります。(しかし、それが常にそれほど単純かどうかはわかりません。)

于 2010-07-17T17:20:11.377 に答える
0

環境の easy_install を使用して PyCUDA をインストールできます。

dev-env-path/bin/easy_install pycuda

同じバージョンの 0.94rc が提供されます。

Windows では、easy_install.exe は Scripts ディレクトリにあります。

于 2010-07-17T13:38:06.760 に答える