3

システムに正常にインストールされvirtualenvましvirtualenvwrapperた。それは完全に機能しています。pynumeric将来の利便性のために、すべてのお気に入りのモジュールを という名前の環境にインストールするスクリプトを作成し、 に配置したいと考えています~/.virtualenvs。このスクリプトではvirtualenvwrapper、スクリプト内から使用する必要があります。残念ながら、これはどういうわけか私にとってはうまくいきません。workon存在しmkvirtualenvないエラーが発生し続けます。

したがって、基本的に私の質問は次のようになります: Python スクリプト内からではなくvirtualenvwrapper、ターミナルで機能するのはなぜですか?

install_pynumeric.py (編集)

#!/usr/bin/python

import os
import sys
import subprocess as sp

# Set CPU frequency governer to performance
#sp.check_call('cpuset gov performance', shell=True)

# Check for parent directory of virtual environments
if not os.path.isdir('/home/carlos/.virtualenvs'):
    sys.exit('The parent directory for virtual environments does not exist yet. Create it before preceeding.')

# Create virtual environment pynumeric if it does not exist yet and activate
if not os.path.isdir('/home/carlos/.virtualenvs/pynumeric'):
    sp.check_call('mkvirtualenv pynumeric', shell=True)

# Activate pynumeric
sp.check_call('workon pynumeric', shell=True)

# List of Python modules to be installed
modules = ['numpy',
        'scipy',
        'sympy',
        'matplotlib',
        'pyqt4',
        'sphinx',
        'rope',
        'pyflakes',
        'ipython',
        'pylint',
        'psutil',
        'spyder',
        'pydstool'
        ]

# Install modules
for m in modules:
    cmd = 'pip install ' + m
    sp.check_call(cmd, shell=True)

# Deactivate pynumeric
sp.check_call('deactivate', shell=True)

# Set CPU frequency governer to ondemand
#sp.check_call('cpuset gov ondemand', shell=True)

次のエラーが表示されます。

/bin/sh: mkvirtualenv: command not found
Traceback (most recent call last):
File "./install_pynumeric.py", line 16, in <module>
    sp.check_call('mkvirtualenv pynumeric', shell=True)
File "/usr/lib/python2.7/subprocess.py", line 542, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'mkvirtualenv pynumeric' returned non-zero exit status 127
4

1 に答える 1

0

編集:deactivateスクリプトではなく関数であるため、機能しません。


しばらく前に同じ問題に遭遇しました。パラメータを に設定しsubprocessてコマンドを実行するために使用することをお勧めします。これにより、現在の環境が使用され、まったく新しい環境が作成されるわけではありません。shellTrue

例 :

from subprocess import check_call
check_call("deactivate", shell=True)
于 2013-11-13T20:38:11.347 に答える