2015-02-17 6 views
6

की ओर जाता है,Django makemigrations अनुमति नहीं दी त्रुटि

INSTALLED_APPS = (
    ... 
    'social.apps.django_app.default', 
    ... 
) 

मेरी इंस्टॉल किए गए एप्लिकेशन के लिए अजगर सामाजिक प्रमाणन जोड़ने यानी और उसके बाद की कोशिश के बाद एक

python manage.py makemigrations 

मैं एक unsurprising अनुमतियां प्राप्त त्रुटि

Migrations for 'default': 
    0002_auto_20150217_2053.py: 
    - Alter field user on usersocialauth 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/lib/python2.7/site-packages/django/core/management /__init__.py", line 385, in execute_from_command_line 
utility.execute() 
File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv 
    self.execute(*args, **options.__dict__) 
File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute 
    output = self.handle(*args, **options) 
File "/usr/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 124, in handle 
    self.write_migration_files(changes) 
File "/usr/lib/python2.7/site-packages/django/core/management/commands /makemigrations.py", line 153, in write_migration_files 
    with open(writer.path, "wb") as fh: 
    IOError: [Errno 13] Permission denied: u'/usr/lib/python2.7/site-packages/social/apps/django_app/default/migrations/0002_auto_20150217_2053.py' 

यह समझ में आता है कि मैं सिस्टम विस्तृत पैकेज स्थापना निदेशक को नहीं लिख सकता एँ।

साइट-पैकेज/सामाजिक निर्देशिकाओं पर अनुमतियों को बदलने जैसे कुछ स्पष्ट तरीके हैं। हालांकि, क्या यह ऐसा करने का एकमात्र तरीका है, या क्या मुझे कुछ याद आ रही है?

+0

आप सिस्टम पैकेज में ऐप के लिए माइग्रेशन करने का प्रयास क्यों कर रहे हैं? यदि आप योगदान देना चाहते हैं, तो आपको उस पैकेज के कोड को अलग django प्रोजेक्ट में कॉपी करना चाहिए और वहां माइग्रेशन करना चाहिए। – GwynBleidD

+0

अच्छा बिंदु। लेकिन मैं यहां सलाह का पालन कर रहा था https://python-social-auth.readthedocs.org/en/latest/configuration/django.html – mjandrews

+0

मुझे लगता है कि पाइथन-सोशल-ऑथ के दस्तावेज़ीकरण में गलती है। उपयोग माइग्रेशन के लिए पैकेज के साथ तैयार किया जाना चाहिए। – GwynBleidD

उत्तर

0

जैसा कि आपके प्रश्न में बताया गया है, निर्देशिकाओं पर अनुमतियों को बदलना एक समाधान होगा। फिर भी, ऐसा करने का एक और तरीका है अपने Django प्रोजेक्ट के लिए वर्चुअलनेव का उपयोग करके एक पृथक पायथन पर्यावरण बनाना। या, अधिक सुविधाजनक रूप से, एक्सटेंशन वर्चुअलएन्वार्पर

स्थापित बाद में इस तरह:

$ pip install virtualenvwrapper 

निम्नलिखित एक अपनी परियोजना के लिए एक virtualenv को सक्रिय करता है बनाता है:

$ mkvirtualenv django_project 
$ workon django_project 

उसके बाद, आप Django और पायथन सामाजिक प्रमाणीकरण

स्थापित करने के लिए स्वतंत्र हैं
$ pip install django 
$ pip install python-social-auth 

आप देखेंगे कि यह सबमें स्थापित किया जाएगा

यह पाइथन और Django उपयोगकर्ताओं के बीच एक आम, अनुशंसित अभ्यास है। यदि आप अपनी सभी परियोजनाओं के लिए अपने सिस्टम की पायथन स्थापना का उपयोग करते हैं तो यह अनुमति मुद्दों को हल करेगा, साथ ही साथ अन्य निर्भरता मुद्दों को भी हल करेगा।

ध्यान दें कि अजगर सामाजिक प्रमाणीकरण वास्तव में करता है एक Django परियोजना में इसके उपयोग से पहले एक प्रवास के सृजन की आवश्यकता, प्रवास 'UserSocialAuth' मॉडल

+1

अच्छी सलाह! मैं गया हूं और अब वर्चुअलएन्व स्थापित कर चुका हूं। धन्यवाद। – mjandrews

1
साथ

में विदेशी कुंजी 'उपयोगकर्ता के लिए एक related_name कहते हैं उपरोक्त स्वीकार्य समाधान, आप प्रभावी ढंग से अपने पायथन पर्यावरण में प्रोजेक्ट फाइलें डाल रहे हैं। और हर बार जब आप किसी नए सर्वर पर तैनात होते हैं, तो आपको उन फाइलों को बनाने के लिए makemigrations चलाने होंगे।

अपने स्वयं के प्रोजेक्ट के अंदर सामाजिक माइग्रेशन डालने के लिए makemigrations को बताने के बारे में कैसे?

MIGRATION_MODULES = { 
    # social.apps.django_app.default  
    'default': 'myproject.mysocial.migrations',   
} 

इस तरह, जब आप अपने सर्वर पर तैनात होते हैं, तो आपकी परियोजना स्वयं निहित होती है और आपके पायथन पर्यावरण को हैक किए बिना काम करेगी।

+0

अच्छा बिंदु लेकिन यह समाधान मेरे लिए काम नहीं करता था। यह अभी भी माइग्रेशन फ़ाइलों पर सिस्टम-व्यापी/बाहरी दृष्टिकोण के साथ जाता है :( – chefarov

0

इनमें से कोई भी जवाब आपकी समस्या का समाधान नहीं करता है, जहां तक ​​मैं कह सकता हूं। बस एक नए एप्लिकेशन को स्थापित करने के लिए नई माइग्रेशन फाइलों के निर्माण की आवश्यकता नहीं है; उन्हें उम्मीद करनी चाहिए, आवेदन पैकेज के साथ भेज दिया जाना चाहिए।

यह पैकेज लेखक द्वारा बग या पर्यवेक्षण की तरह दिखता है।

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