কীভাবে আমি ভার্চুয়ালেনভের পাইথনপথে কোনও পথ যুক্ত করব


99

আমি পাইথোনপথ এনভায়রনমেন্ট ভেরিয়েবলের জন্য একটি পথ যুক্ত করার চেষ্টা করছি, এটি কেবল কোনও নির্দিষ্ট ভার্চুয়ালেনভ পরিবেশ থেকেই দৃশ্যমান হবে।

আমি SET PYTHONPATH=...একটি ভার্চুয়ালেনভ কমান্ড প্রম্পটের অধীনে চেষ্টা করেছি , তবে এটি পুরো পরিবেশের জন্য পরিবর্তনশীল সেট করে।

আমি কীভাবে এটি অর্জন করব?

উত্তর:


158

আপনি সাধারণত ফাইলগুলি ব্যবহার করে.pth পাইথনপথের সাথে কিছু করতে এড়াতে পারেন । আপনার ভার্চুয়ালেনভের সাইট-প্যাকেজ ফোল্ডারে একটি .pth এক্সটেনশন (যে কোনও বেসনেম কাজ করে) সহ কেবল একটি ফাইল রাখুন, যেমন lib\python2.7\site-packagesআপনার প্যাকেজটিকে কেবল বিষয়বস্তু হিসাবে অন্তর্ভুক্ত থাকা ডিরেক্টরিটির নিখুঁত পথ সহ।


দুর্ভাগ্যক্রমে এটি ওভাররাইড হিসাবে কাজ করে না। এটি পথটি সংযোজন করে, তাই আপনি বিকাশ করলে এটি কার্যকর হয় না।
এরিক অ্যারোনস্টি

এছাড়াও, আপনি যদি চূড়ান্ত পথটি জানেন তবে একটি চলকটির বিন্দুটি কী?
জেমি মার্শাল

আপনি আপনার ভার্চুয়াল পরিবেশের সাইট-প্যাকেজ ফোল্ডারেও যেতে পারেন এবং .pth ফাইলের মতো একটি প্রতীকী লিঙ্ক তৈরি করতে পারেন: ln -s পাথ / থেকে / somfile.pth। একাধিক ভার্চুয়াল পরিবেশে অ্যাক্সেসযোগ্য হওয়ার জন্য যখন একই ডিরেক্টরিটির প্রয়োজন হয়েছিল তখন আমি এই
দরকারীটি পেয়েছি

91

আপনি ব্যবহার করেন, তাহলে virtualenv, আপনি সম্ভবত এছাড়াও ব্যবহার করা উচিত virtualenvwrapper , যে ক্ষেত্রে আপনি ব্যবহার করতে পারেন add2virtualenv বর্তমান virtualenv জন্য পাইথন পথে পাথ যোগ করার জন্য কমান্ড প্রয়োগ করুন:

add2virtualenv directory1 directory2 …


4
ভার্চুয়ালেনভ থেকে অপসারণ সম্পর্কে কীভাবে?
সিলভারডাগার

4
আমি একটি বন্ধুত্বপূর্ণ মন্তব্য যোগ করতে চাই যে ভাগ করা হোস্ট এবং অনুরূপ পরিস্থিতিতে ভেনভ র্যাপার পছন্দ হয় না। এই ক্ষেত্রে একটি ভেনভ কার্যকর হয় এবং অতিরিক্ত ইনস্টল করার জন্য প্রয়োজনীয় সমস্ত কিছুই পছন্দসই নয়। স্থানীয়ভাবে জিনিসগুলি পৃথক, তবে সার্ভার / চিত্রে KISS আসলেই গুরুত্বপূর্ণ।
মার্ক

4
আমি নিশ্চিত না যে কমান্ডটি কীভাবে এটি লিখিত হয়েছিল তখন কীভাবে কাজ করেছে, তবে add2virtualenvY পাইথনপথ পরিবর্তন করে না, বরং এটি sys.path পরিবর্তন করে mod
ForeverWintr

4
@ জাজেটারগার্ড: দুঃখিত, আমার একটি উত্স প্রদান করা উচিত ছিল। যদি আপনি এর উত্স কোডটি লক্ষ্য করেন তবে add2virtualenvদেখতে পাবেন এটি sys.path পরিবর্তন করছে। আমি সম্মত হই যে ডকসগুলি PYTHONPATHপরিবেশের পরিবর্তনশীলকে পরিবর্তিত করার মতো শব্দ করে তোলে তবে এটি ভুল বলে মনে হয়। bitbucket.org/virtualenvwrapper/virtualenvwrapper/src/...
ForeverWintr

4
@ForeverWintr আমি সংশোধন করে দাঁড়িয়েছি -। Pth ফাইলগুলি sys.path সেটআপ করতে ব্যবহৃত হয়। docs.python.org/2/library/site.html কনফিউজড.কম !
ostergaard

5

আপনি আপনার ভার্চুয়ালেনভের মধ্যে একটিতে সিমলিংক দেওয়ার চেষ্টা করতে পারেন।

যেমন 1) আপনার ভার্চুয়ালনেভ সক্রিয় করুন 2) অজগর চালান 3) এসি আমদানি করুন এবং সিএস পরীক্ষা করুন 4) আপনি সেখানে অজগর অনুসন্ধানের পথটি পাবেন। এর মধ্যে একটি বেছে নিন (উদাহরণস্বরূপ সাইট-প্যাকেজগুলি) 5) সেখানে যান এবং আপনার প্যাকেজটিতে সিমিলিংক তৈরি করুন যেমন: আপনি-আমদানি হবেন এমন-এর সাথে আপনার প্যাকেজটির নাম ln -s

এইভাবে আপনার ভার্চুয়ালেনভকে সক্রিয় না করেও এটিকে আমদানি করতে সক্ষম হওয়া উচিত। সহজভাবে চেষ্টা করুন: পাথ-টু-আপনার-ভ্যুচুয়ালেনভ-ফোল্ডার / বিন / পাইথন এবং আপনার প্যাকেজটি আমদানি করুন।


আমি অনুমান করি যে এটি .pth ফাইলের পরিবর্তে সিমলিংকগুলি ব্যবহার করার জন্য কম ছিল। এটি যদিও আমার পক্ষে কাজ করেছে, ততই তীব্র।
গ্যারেথ ডেভিডসন

3

আপনি যদি ভার্চুয়ালেনভ্র্যাপার ব্যবহার করছেন,

$ cd to the parent folder
$ add2virtualenv  folder_to_add

কনসোল প্রদর্শিত হবে

Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"

এটাই, এবং আপনার যাওয়া উচিত


1
import sys
import os

print(str(sys.path))

dir_path = os.path.dirname(os.path.realpath(__file__))
print("current working dir: %s" % dir_path)

sys.path.insert(0, dir_path)

আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি যে আপনি পথটি বিশৃঙ্খলা এড়াতে আপনাকে ভার্চুয়ালেনভ এবং ভার্চুয়ালেনভ্রাপার ব্যবহার করবেন।


আপনি যদি এটি কোনও অজগর সংস্করণ নিয়ে কাজ করতে চান তবে অভিনব এফ-স্ট্রিং f "... {dir_path}" এর পরিবর্তে কেবল একটি সাধারণ পুরানো-স্টাইলের স্ট্রিং-ফর্ম্যাট ব্যবহার করুন
গিলিয়াম এস এস

মন্তব্যের জন্য ধন্যবাদ. আমি ব্যবহারের জন্য সংশোধিত। পুরানো উপায়গুলি মনোরম ও মূর্তিবিহীন এবং সাধারণ টেম্প্লেটিং সিস্টেম সম্পর্কে অভিনব কোনও কিছুই নেই
রাবার হাঁস

সব কিছু আপেক্ষিক :)
গিলিয়াম এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.