2013-05-05 10 views
6

मैं एक पिरामिड ऐप इंस्टॉल करने की कोशिश कर रहा हूं - मान लें test_app। वर्चुअल वातावरण के अंदर और इसे test-app के रूप में स्थापित किया जा रहा है (पीआईपी फ्रीज आउटपुट इसे test-app==0.0 दिखाता है)।पीआईपी अंडरस्कोर को डैश में परिवर्तित क्यों करता है

इस वजह से, मैं पैकेज आयात नहीं कर सकता।

मुझे इस समस्या को कैसे ठीक करना चाहिए?

और जानकारी: http://mail.python.org/pipermail/distutils-sig/2011-August/017935.html

मैं पिप संस्करण का उपयोग कर रहा 1.3.1

setup.py:

import os 

from setuptools import setup, find_packages 

here = os.path.abspath(os.path.dirname(__file__)) 
README = open(os.path.join(here, 'README.txt')).read() 
CHANGES = open(os.path.join(here, 'CHANGES.txt')).read() 

requires = [ 
    'pyramid', 
    'pyramid_debugtoolbar', 
    'waitress', 
    ] 

setup(name='test_app', 
     version='0.0', 
     description='test_app', 
     long_description=README + '\n\n' + CHANGES, 
     classifiers=[ 
     "Programming Language :: Python", 
     "Framework :: Pyramid", 
     "Topic :: Internet :: WWW/HTTP", 
     "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", 
     ], 
     author='', 
     author_email='', 
     url='', 
     keywords='web pyramid pylons', 
     packages=find_packages(), 
     include_package_data=True, 
     zip_safe=False, 
     install_requires=requires, 
     tests_require=requires, 
     test_suite="test_app", 
     entry_points="""\ 
     [paste.app_factory] 
     main = test_app:main 
     """, 
    ) 

अद्यतन:

अब तक निष्कर्ष संक्षेप में प्रस्तुत करने:

  • यह सामान्य है कि पीपी पैकेज नाम को टेस्ट-ऐप के रूप में रिपोर्ट करता है।
  • यह सामान्य नहीं है कि अंडा लिंक आपके वर्चुअल एनवी रूट को इंगित कर रहा है।
  • लेकिन तथ्य यह है कि .egg-info फ़ाइल आपके वर्चुअल एनवी रूट के अंदर बनाई गई है और साथ ही उस निर्देशिका का उपयोग अंडे रूट के रूप में विकसित करने के लिए भी है।
+0

सारांश अब तक: 'develop' कमांड वर्चुअल एनवी रूट में' .gg-info' निर्देशिका बनाता है, और '.gg-link' फ़ाइल उसी रूट निर्देशिका को इंगित करता है। यह आयात त्रुटि का कारण है। तथ्य यह है कि 'पीआईपी' पैकेज नाम को 'टेस्ट-एप' के रूप में रिपोर्ट करता है सामान्य है। –

+0

@MartijnPieters मैंने समस्या हल कर दी है। मेरा जवाब देखें – treecoder

उत्तर

4

तो आखिर में, बहुत सारे झुकाव के बाद, मुझे समाधान मिला - जो कष्टप्रद सरल है।

मैं वर्चुअलएन्व का उपयोग कर रहा हूं और विकास मोड में पैकेज स्थापित कर रहा हूं।

मैं गलत स्थान से पैकेज स्थापित कर रहा था। यह पता चला है कि आप जिस स्थान (निर्देशिका) से python setup.py develop चलाते हैं वह वास्तव में .egg-link फ़ाइल में जाता है।

आपको उस स्थान से वर्चुअल वातावरण में पैकेज स्थापित करना चाहिए जहां आपका कोड है।

तो, उदाहरण के लिए, के अपने कोड में '/ a/b' रहता है और अपने virtualenv env '/ x/y/env' में है मान लीजिए, तो आप इस तरह पैकेज स्थापित करना चाहिए:

$ cd /a/b 
$ /x/y/env/bin/python setup.py develop 

यह पैकेज को ठीक से स्थापित करेगा।

इसलिए, '-' और '_' समस्या कोई समस्या नहीं है और आपको उस स्थान के बारे में सावधान रहना चाहिए जहां से आप develop मोड में पैकेज इंस्टॉल कर रहे हैं।

+0

FWIW, मैंने 'python setup.py develop' के बजाय' pip install -e। 'का उपयोग करने के लिए लिया है। वे कार्यात्मक रूप से समकक्ष हैं, लेकिन पीपी के संस्करण में कम कीड़े हैं। –

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