2013-02-14 14 views
14

यह मेरा setup.py फ़ाइलपायथन मॉड्यूल स्थापित नहीं होगा

#!/usr/bin/env python 

from setuptools import setup 
from sys import path 

setup(name= 'conundrum', 
    version= '0.1.0', 
    author= 'elssar', 
    author_email= '[email protected]', 
    py_modules= ['conundrum'], 
    url= 'https://github.com/elssar/conundrum', 
    license= 'MIT', 
    description= 'A framework agnostic blog generator.', 
    long_description= open(path[0]+'/README.md', 'r').read(), 
    install_requires= [ 
     'PyYAML >= 3.0.9', 
     'Markdown >= 2.2.0', 
     'requests >= 1.0.4', 
     ], 
) 

मैं का उपयोग कर की कोशिश की है दोनों setuptools और distutils, लेकिन यह मेरी मॉड्यूल स्थापित नहीं होंगे। इसके बजाय मैं

file module.py (for module module) not found 

प्राप्त यह मेरा निर्देशिका संरचना

/module 
|--/test 
|--README.md 
|--license.txt 
|--module.py 
|--setup.py 

बस स्पष्ट होना है, मॉड्यूल रूट निर्देशिका है।

क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं? जब मैं स्थापित करने के लिए

[email protected]:/usr/local/src/conundrum$ sudo python /home/elssar/code/conundrum/setup.py install 
/usr/lib/python2.6/distutils/dist.py:250: UserWarning: 'licence' distribution option is deprecated; use 'license' 
    warnings.warn(msg) 
running install 
running bdist_egg 
running egg_info 
writing requirements to conundrum.egg-info/requires.txt 
writing conundrum.egg-info/PKG-INFO 
writing top-level names to conundrum.egg-info/top_level.txt 
writing dependency_links to conundrum.egg-info/dependency_links.txt 
warning: manifest_maker: standard file 'setup.py' not found 
file conundrum.py (for module conundrum) not found 
reading manifest file 'conundrum.egg-info/SOURCES.txt' 
writing manifest file 'conundrum.egg-info/SOURCES.txt' 
installing library code to build/bdist.linux-x86_64/egg 
running install_lib 
running build_py 
file conundrum.py (for module conundrum) not found 
file conundrum.py (for module conundrum) not found 
warning: install_lib: 'build/lib.linux-x86_64-2.6' does not exist -- no Python modules to install 
creating build/bdist.linux-x86_64/egg 
creating build/bdist.linux-x86_64/egg/EGG-INFO 
copying conundrum.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying conundrum.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying conundrum.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying conundrum.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying conundrum.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
zip_safe flag not set; analyzing archive contents... 
creating 'dist/conundrum-0.1.0-py2.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it 
removing 'build/bdist.linux-x86_64/egg' (and everything under it) 
Processing conundrum-0.1.0-py2.6.egg 
removing '/usr/local/lib/python2.6/dist-packages/conundrum-0.1.0-py2.6.egg' (and everything under it) 
creating /usr/local/lib/python2.6/dist-packages/conundrum-0.1.0-py2.6.egg 
Extracting conundrum-0.1.0-py2.6.egg to /usr/local/lib/python2.6/dist-packages 
conundrum 0.1.0 is already the active version in easy-install.pth 

Installed /usr/local/lib/python2.6/dist-packages/conundrum-0.1.0-py2.6.egg 
Processing dependencies for conundrum==0.1.0 
Searching for requests==1.0.4 
Best match: requests 1.0.4 
Adding requests 1.0.4 to easy-install.pth file 

Using /usr/local/lib/python2.6/dist-packages 
Searching for Markdown==2.2.0 
Best match: Markdown 2.2.0 
Processing Markdown-2.2.0-py2.6.egg 
Markdown 2.2.0 is already the active version in easy-install.pth 
Installing markdown_py script to /usr/local/bin 

Using /usr/local/lib/python2.6/dist-packages/Markdown-2.2.0-py2.6.egg 
Searching for PyYAML==3.10 
Best match: PyYAML 3.10 
Adding PyYAML 3.10 to easy-install.pth file 

Using /usr/local/lib/python2.6/dist-packages 
Finished processing dependencies for conundrum==0.1.0 

बस यकीन है कि वहाँ कुछ गड़बड़ मेरी अपने सिस्टम नहीं है बनने की कोशिश

यह आउटपुट है, मैं एक ऐसी ही setup.py साथ GitHub से दो संकुल डाउनलोड किया है और उन्हें स्थापित। किसी भी समस्या के बिना स्थापित किया गया।

+1

आप किस आदेश का उपयोग करने के लिए उपयोग कर रहे हैं और आप क्या त्रुटियां प्राप्त कर रहे हैं? –

+0

@ माइक यह एकमात्र त्रुटि है जो मुझे मिलती है। इसके अलावा कुछ चेतावनियां भी हैं। – elssar

+0

@elssar: चेतावनियां क्या हैं? और त्रुटि पर ट्रेसबैक क्या है? शायद आपको लगता है कि इनमें से कोई भी प्रासंगिक नहीं है, और शायद आप सही हैं, लेकिन आप गलत हो सकते हैं-अगर आपको पता था कि वास्तव में क्या हो रहा था, तो आप इस सवाल से नहीं पूछेंगे। तो कृपया, हमें वास्तविक आदेश दें जो आप चल रहे हैं और पूर्ण आउटपुट दें। – abarnert

उत्तर

15

मैं setup.py को एक अलग निर्देशिका से नहीं चला सकता। इसे उस निर्देशिका से चलाने की जरूरत है जिसमें यह है। वह समस्या थी।

फिक्स्ड।

+1

ठीक है। मैंने अभी माना है कि आप जानते थे कि 'module.py' '$ (pwd)/module.py' होगा,' $ (dirname /path/to/setup.py)/module.py' नहीं होगा। लेकिन यह एक बहुत अच्छी धारणा नहीं थी। यूनिक्स उपकरण अन्य तरीकों से कहीं अधिक बार ऐसा करते हैं, लेकिन यह "ऐसा ही हो सकता है" (विशेष रूप से विंडोज उपयोगकर्ताओं के लिए) जैसा नहीं है। (बीटीडब्ल्यू, वही सच है यदि आप 'package_dir' में एक सापेक्ष पथ का उपयोग करते हैं-यह पीडब्ल्यूडी के सापेक्ष है।) क्या आपको लगता है कि दस्तावेज़ों को यह स्पष्ट करने की आवश्यकता है? यदि ऐसा है, तो आप एक दस्तावेज़ बग फाइल करना चाहते हैं, या इसे मेलिंग सूचियों पर ला सकते हैं। – abarnert

+0

@abarnert मुझे पता है कि 'module.py' कहां है, मैंने अभी माना है कि' setup.py' स्वचालित रूप से अपनी रूट निर्देशिका से पढ़ेगा और वर्तमान कार्य निर्देशिका में स्थापित होगा। मुझे दस्तावेज़ों को फिर से ध्यान से पढ़ना होगा, यह देखने के लिए कि क्या यह पहले से कहीं लिखा नहीं गया है। मुझे लगता है कि आधा मेरी समस्याएं कई स्रोतों की रेखाओं के बीच पढ़ने की मेरी खतरनाक प्रक्रिया के परिणामस्वरूप हैं और फिर कोड उदाहरणों को देखकर यह पता लगाने के लिए क्या हो रहा है यह समझने के बिना क्या हो रहा है। – elssar

+0

@elssar: मैं दस्तावेज़ों में स्पष्ट रूप से कहा गया था कहीं भी नहीं मिला; मुझे लगता है कि वे सिर्फ वही धारणा करते हैं जो मैंने किया था। लेकिन मैं, आपके जैसे, बिल्कुल विस्तृत जांच में उन्हें नहीं समझता था। – abarnert

4

अगर मैं अपने लेआउट को समझते हैं, समस्या यह है कि आप डिफ़ॉल्ट package_dir, कि module शीर्ष-स्तरीय मॉड्यूल module/module.py के रूप में नहीं, module.py के रूप में रूट निर्देशिका में होने की जरूरत है, जिसका अर्थ है का उपयोग कर रहे है।

तो, यह जोड़ें:

package_dir = {'': 'module'} 

अब, यह module/module.py रूप module के लिए ध्यान देंगे।

(पीएस, यह आपके मॉड्यूल, या इसकी उपनिर्देशिका, या आदर्श दोनों दोनों को "मॉड्यूल" के अलावा कुछ और कहा जाता है, तो यह चर्चा करने के लिए बहुत कम भ्रमित होगा। इसके अलावा, यदि आपने अपना चित्रण करने के लिए एक और मानक प्रारूप का उपयोग किया है निर्देशिका पेड़।)

यह Listing whole packages में समझाया गया है। (मुझे एहसास है कि आप अलग-अलग मॉड्यूल सूचीबद्ध नहीं कर रहे हैं, पूरे पैकेज नहीं, लेकिन उस खंड के दस्तावेज़ केवल "खंड, डीडी विकल्प का उपयोग कर पैकेज/निर्देशिका पत्राचार को ओवरराइड कर सकते हैं", जो मैंने लिंक किए गए अनुभाग पर वापस संदर्भित किया है। और referencepackage_dir के लिए भी कम सहायक है; यह केवल "निर्देशिका नामों के लिए पैकेज का मैपिंग" कहता है।)

+2

अपडेट किया गया यह दूसरा जवाब होने के लायक नहीं है, लेकिन मुझे [पैकेजिंग 1.0 के लिए हिचहिकर गाइड - एक पैकेज बनाना] (http://guide.python-distribute.org/creation.html) एक पैकेज संरचना विकसित करने के लिए एक कंकाल के रूप में सहायक होने के लिए। –

+1

@ माइक: आईआईआरसी, वह गाइड सभी जटिल चीजों को समझाता है, और इसके बजाय जटिल चीजों की आवश्यकता से बचने के लिए बताता है - जिसका अर्थ है कि यह शायद ओपी के सवाल का सीधे जवाब नहीं देगा, लेकिन आसानी से उसे जवाब की आवश्यकता नहीं होगी अब और। (और, अगर ऐसा नहीं होता है, तो यह पढ़ने योग्य है।) तो, निश्चित रूप से +1। – abarnert

+0

@ माइक अनुमान मुझे और अधिक स्पष्ट होना चाहिए -> मॉड्यूल मूल निर्देशिका है, इसका वही नाम module.py जैसा है। स्पष्ट होने के लिए - मूल निर्देशिका को मॉड्यूल नाम दिया गया है और इसमें पाइथन स्क्रिप्ट module.py और बाकी सब कुछ है, और परीक्षण के साथ एक उप निर्देशिका है, जिसे मुझे स्थापित करने की आवश्यकता नहीं है। – elssar