2010-02-17 9 views
5

मुझे लिनक्स 2.3.4 पूर्व-स्थापित के साथ लिनक्स मशीन पर कुछ कोड चलाने की आवश्यकता है। मैं उस मशीन के लिए सूडर्स सूची में नहीं हूं, इसलिए ने मेरी होम निर्देशिका में पाइथन 2.6.4 (एक उपनिर्देशिका) बनाई है। तब मैं (पहली बार के लिए) virtualenv उपयोग करने के लिए प्रयास किया, लेकिन मिल गया:कस्टम-निर्माण पायथन के साथ वर्चुअलनव वातावरण बनाने में इस समस्या के आसपास मैं कैसे काम करूं?

$ Python-2.6.4/python virtualenv/virtualenv.py ENV 
New python executable in ENV/bin/python 
Could not find platform dependent libraries <exec_prefix> 
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] 
Installing setuptools......... 
Complete output from command /apps/users/dspitzer/ENV/bin/python -c "#!python 
\"\"\"Bootstrap setuptoo... 

" /apps/users/dspitzer/virtualen...6.egg: 
Could not find platform dependent libraries <exec_prefix> 
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] 
'import site' failed; use -v for traceback 
Traceback (most recent call last): 
File "<string>", line 67, in <module> 
ImportError: No module named md5 
---------------------------------------- 
...Installing setuptools...done. 
Traceback (most recent call last): 
File "virtualenv/virtualenv.py", line 1488, in <module> 
    main() 
File "virtualenv/virtualenv.py", line 529, in main 
    use_distribute=options.use_distribute) 
File "virtualenv/virtualenv.py", line 619, in create_environment 
    install_setuptools(py_executable, unzip=unzip_setuptools) 
File "virtualenv/virtualenv.py", line 361, in install_setuptools 
    _install_req(py_executable, unzip) 
File "virtualenv/virtualenv.py", line 337, in _install_req 
    cwd=cwd) 
File "virtualenv/virtualenv.py", line 590, in call_subprocess 
    % (cmd_desc, proc.returncode)) 
OSError: Command /apps/users/dspitzer/ENV/bin/python -c "#!python 
\"\"\"Bootstrap setuptoo... 

" /apps/users/dspitzer/virtualen...6.egg failed with error code 1 

मैं कुछ मान के लिए PYTHONHOME की स्थापना किया जाना चाहिए? (मैं जानबूझकर नामित मेरी ENV "ENV" एक बेहतर नाम की कमी के लिए।)

जानते हुए भी नहीं करता है, तो मैं उन त्रुटियों को अनदेखा कर सकते हैं, मैं अपने ENV में नाक (0.11.1) स्थापित करने की कोशिश की:

$ cd nose-0.11.1/ 
$ ls 
AUTHORS doc/    lgpl.txt  nose.egg-info/ selftest.py* 
bin/  examples/   MANIFEST.in nosetests.1  setup.cfg 
build/  functional_tests/ NEWS   PKG-INFO  setup.py 
CHANGELOG install-rpm.sh* nose/  README.txt  unit_tests/ 
$ ~/ENV/bin/python setup.py install 
Could not find platform dependent libraries <exec_prefix> 
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] 
Traceback (most recent call last): 
File "setup.py", line 1, in <module> 
    from nose import __version__ as VERSION 
File "/apps/users/dspitzer/nose-0.11.1/nose/__init__.py", line 1, in <module> 
    from nose.core import collector, main, run, run_exit, runmodule 
File "/apps/users/dspitzer/nose-0.11.1/nose/core.py", line 3, in <module> 
    from __future__ import generators 
ImportError: No module named __future__ 

कोई सलाह?

+0

मैंने इसे पहले से ही सर्वरफॉल्ट पर पोस्ट किया है: http://serverfault.com/questions/113656/, लेकिन मैंने देखा कि यहां कई और वर्चुअलवेव प्रश्न हैं, इसलिए मैंने यहां पोस्ट करने का भी निर्णय लिया। –

उत्तर

7

क्या आप वास्तव में अपने कस्टम पायथन निर्माण पर "इंस्टॉल करें" चलाते हैं? आम तौर पर आप, जैसे

./configure --prefix=/path/to/installdir (other options) 
make 
make install 

नोट कुछ करने के लिए उपसर्ग किसी भी निर्देशिका आप को पूरा लिखने अनुमतियाँ हो सकता है चाहता हूँ उदाहरण के लिए मैं बहुत बार साझा-होस्टिंग परिवेश पर $ HOME/क्षुधा का उपयोग करें।

फिर रन/पथ/से/installdir/bin/python, अपनी बिल्ड निर्देशिका से कोई नहीं। यह सही चर बनाना चाहिए, और उसके बाद आप virtualenv स्थापित कर सकते हैं। वर्चुअलएन्व को अपने setup.py:

cd virtualenv_source_dir 
/path/to/installdir/bin/python setup.py install 

इस विधि का उपयोग करके पहले सेटअपtools इंस्टॉल करने की आवश्यकता हो सकती है।

फिर अंत:

# Just to be safe 
export PATH="/path/to/installdir/bin:$PATH" 

virtualenv ~/ENV 
~/ENV/bin/pip install somepackage # (and such) 
2

आप वास्तव में स्थापित अपने कस्टम संकलित अजगर सुनिश्चित करने के Crast के सुझाव के अलावा, आप भी जांच करनी चाहिए कि कस्टम पायथन वास्तव में अपने पुस्तकालयों पा सकते हैं। यह संकेत है कि आप PYTHONHOME के संदेश के साथ मिल रहे हैं। आयात त्रुटियों का सुझाव है कि आपको अपने .bashrc या उपयुक्त खोल कॉन्फ़िगरेशन export PYTHONHOME=/path/to/python_installation में सेट करने की आवश्यकता है।

साथ ही, जब आप अजगर की एक गैर-डिफ़ॉल्ट संस्करण का उपयोग करने virtualenv बताने के लिए कोशिश कर रहे हैं, तो आप -p,--python ध्वज का उपयोग करने की जरूरत है, उदाहरण के लिए,

virtualenv --python=/path/to/python_installation/bin/python myenv 

भी देखें संबंधित सवाल, "Use different Python version with virtualenv"

+1

यदि पाइथन सही ढंग से 'इंस्टॉल करें' है, तो आपको PythonHOME पर्यावरण var सेट करने की आवश्यकता नहीं है। यह ज्यादातर एक पूरी तरह से अलग stdlib पथ के साथ एक बाइनरी का उपयोग करने के लिए प्रयोग किया जाता है। आम तौर पर, यह मान आपके पायथन दुभाषिया में संकलित स्थापना उपसर्ग से स्वत: निर्धारित होता है। यह वर्चुअलएन्व को भी भ्रमित कर सकता है, जो संभवतया पाइथनहोम या दुभाषिया के समतुल्य में हस्तक्षेप करता है। – Crast

1

मुझे एक ही निर्देशिका में स्थापित करने का प्रयास करते समय एक ही त्रुटि थी जो पहले से ही lib/python2.6 में easy_install था। मुझे lib64/python2.6 से lib/python2.6 पर एक लिंक डालना पड़ा।

मैं नहीं कह रहा हूं कि मेरा फिक्स सही है, बल्कि, मैं एक और कारण बता रहा हूं कि आपको यह त्रुटि क्यों मिल सकती है।

0

अब आप आसानी से एनाकोंडा का उपयोग कर एक unpriviledged उपयोगकर्ता के रूप में अजगर स्थापित कर सकते हैं: http://continuum.io/downloads

यह इस सवाल के समान है।जवाबों में से एक बार एक नया वातावरण बनाने के बाद, तो आपको वर्चुअल-एनएनवी का उपयोग करने की आवश्यकता नहीं है और कभी-कभी गॉथस से बचने की आवश्यकता नहीं होती है: Installing Anaconda into a Virtual Environment

conda create -n myenv1 ipython scipy

0

मैं @ Crast के जवाब पर एक टिप्पणी के रूप में जोड़ना पर्याप्त प्रतिनिधि नहीं है और इस सवाल का 4 साल पुराना है, लेकिन यह किसी के लिए उपयोगी हो सकता है। विंडोज़ में, आपको python.exe पर पथ करना होगा, लेकिन ऐसा लगता है कि लिनक्स/ओएस एक्स में आप फ़ोल्डर के लिए बस पथ हैं। उदाहरण:

विंडोज:

virtualenv -p <PATH TO YOUR DESIRED PYTHON.EXE> venv 

मौजूदा निर्देशिका में सबफ़ोल्डर "venv" में एक आभासी वातावरण बनाता है।

+0

असल में लिनक्स इस मामले में समान है। दोनों पाइथन निष्पादन योग्य उम्मीद करते हैं। लिनक्स निष्पादन योग्य में .exe के साथ समाप्त होने की आवश्यकता नहीं है –

संबंधित मुद्दे