5

Windows でtoxをセットアップして、複数の Python インストールに対してテストを実行しようとしています。C:\Python\PythonXX_YYという名前のフォルダーに各 python をインストールしました。XXこれは python バージョン (例: 27) でYY、32 または 64 のいずれかです。現在、C:\Python\Python33_64新しい python ランチャーを使用して必要なバージョンを実行しているため、私の PATH にある python は のみです。このバージョンからtoxも実行しています。

最初の問題は、おそらくデフォルトの場所にないため、tox がこれらのインストールを検出しないことです。環境ごとに tox.ini でパスを設定することでこれを回避できますが、設定が自分のコンピューターに非常に固有のものになります。私のpythonがグローバルにどこにあるかをtoxに知らせるより良い方法はありますか?

2 番目の問題は、tox.ini で Python の場所を設定すると、実行時に次のエラーが発生することです (Python27 の場合)。

Traceback (most recent call last):
  File "c:\Python\Python33_64\lib\site-packages\virtualenv.py", line 2557, in <module>
    main()
  File "c:\Python\Python33_64\lib\site-packages\virtualenv.py", line 961, in main
    never_download=options.never_download)
  File "c:\Python\Python33_64\lib\site-packages\virtualenv.py", line 1062, in create_environment
    site_packages=site_packages, clear=clear))
  File "c:\Python\Python33_64\lib\site-packages\virtualenv.py", line 1255, in install_python
    copy_required_modules(home_dir)
  File "c:\Python\Python33_64\lib\site-packages\virtualenv.py", line 1193, in copy_required_modules
    dst_filename = change_prefix(filename, dst_prefix)
  File "c:\Python\Python33_64\lib\site-packages\virtualenv.py", line 1164, in change_prefix
    (filename, prefixes)
AssertionError: Filename c:\Python\Python33_64\lib\site-packages\readline.py does not start with any of these prefixes: ['c:\\python\\python27_64']

ERROR: InvocationError: c:\python\python27_64\python.exe c:\Python\Python33_64\lib\site-packages\virtualenv.py --distribute py27 (see C:\Users\david.townshend\Documents\Global\Programming\norman\.tox\py27\log\py27-0.log)

Python3.3 から Python2.7 のものをインストールしようとしているように見えますが、これまで virtualenv を実際に使用したことがないため、このエラーを誤解している可能性があります。

これに対する解決策が何であるかはわかりませんが、明白な解決策は、tox が python ランチャーを使用して必要な python バージョンを取得することであるように思われます。これを行う方法はありますか?

4

2 に答える 2

3

tox は次のような場所で python を探すようです:

m = re.match(r"python(\d)\.(\d)", name)
if m:
    # The standard names are in predictable places.
    actual = r"c:\python%s%s\python.exe" % m.groups()

したがって、pythons を c:\Python3.3\ などに配置する必要があります。.アンダースコアの代わりにドットに注意してください_。これは苦痛ですが。

于 2013-08-16T09:14:08.460 に答える