سلام وقت بخیر
بنده به یه مشکلی برخوردم
هروقت میخوام venv بسازم با دستور
virtualenv -p python3 <name>
بصورت پیشفرض پکیج های زیر رو هم نصب میکنه ( درحالی که توو ویدئو این پیکج ها نصب نیستن )
appdirs==1.4.3
CacheControl==0.12.6
certifi==2019.11.28
chardet==3.0.4
colorama==0.4.3
contextlib2==0.6.0
distlib==0.3.0
distro==1.4.0
html5lib==1.0.1
idna==2.8
ipaddr==2.2.0
lockfile==0.12.2
msgpack==0.6.2
packaging==20.3
pep517==0.8.2
progress==1.5
pyparsing==2.4.6
pytoml==0.1.21
requests==2.22.0
retrying==1.3.3
six==1.14.0
urllib3==1.25.8
webencodings==0.5.1
درحالیکه با دستور زیر وقتی venv میسازم هیچ پکیج پیشفرضی نصب نیست.
python3 -m venv <name>
درضمن قبلا هیچ پکیجی روو سیستم عامل نصب نشده
سیستم عامل تازه نصب شده
من و محمد رضا نصیری یه صحبت هایی رو تو تگرام کردیم که همه اش رو اینجا میذارم:
- من:
سلاااااااااااااااااااااااام
خوبی؟این خروجی چه دستوری عه؟
created virtual environment CPython3.8.5.final.0-64 in 1029ms
creator CPython3Posix(dest=/home/death/Projects/Academy/test/venv, clear=False, global=False)
seeder FromAppData(download=False, html5lib=latest, msgpack=latest, pkg_resources=latest, idna=latest, ipaddr=latest, packaging=latest, colorama=latest, certifi=latest, pyparsing=latest, wheel=latest, urllib3=latest, CacheControl=latest, webencodings=latest, pytoml=latest, setuptools=latest, retrying=latest, chardet=latest, distro=latest, contextlib2=latest, appdirs=latest, pep517=latest, lockfile=latest, six=latest, requests=latest, distlib=latest, pip=latest, progress=latest, via=copy, app_data_dir=/home/death/.local/share/virtualenv/seed-app-data/v1.0.1.debian)
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
بنظر میاد یا داری اشتباه virtualenv میسازی یا با یه ابزار دیگه میسازی...
یه ترمینال باز کن و این دستورات رو بزن:
pip3 install virtualenv
virtualenv venv
درست کار میکنه؟ باز هم همون مشکل رو داری؟
دستور زیر چی؟
virtualenv -p python3 venv
+ محمدرضا نصیری
سلام متشکرم شما خوبین
این خروجی دستور
virtualenv -p python3 <name>
خروجی دستور :
pip3 install virtualenv
اینه :
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: virtualenv in /usr/lib/python3/dist-packages (20.0.17)
دستور
virtualenv venv
هم کار میکنه ولی خروجیش دقیقا همون خروجی ای که الان ریپلی کردم
و وقتی فعالش میکنم و pip freeze میزنم همون پیکج هایی که قید کردم رو پیش فرض نصب کردهدستور
virtualenv -p python3 venv
هم دقیقا مثه دستوره بالاییش عمل میکنه و همون خروجی رو میده و همون پیکج هارو پیشفرض نصب میکنه
بعد یه مسئله ای هم هست خروجی pip list سیستم عامل خیلی زیاده پکیج هاش ینی اصن نرمال نیس بنظرم
نمیدونم خروجی pip list شما چیه ولی الان میفرستم خروجیشو ببینید نرماله برا سیستم عاملی که تازه نصب شده و هیچ پکیجی روو سیستم نصب نشده؟
( البته یه مسئله ای هم هست من سیستم عاملم رو رویه vmware بالا میارم
این قضیه که نمیتونه دخیل باشه توو مشکلات؟ چون بنظرم vmware ایزوله میکنه هر سیستم عامل رو خودش)
- من:
من بیشتر همین احتمال رو میدم. (ریپلای کردم به «ینی ممکنه virtualenv اشتباه نصب شده باشه؟»
بنظرم بهتره همه پکیج هایی که روی سیستم عاملت هست رو حذف کنی. مخصوصا virtualenv رو و دوباره نصبش کنی...
برای این کار تو این مقاله
https://stackoverflow.com/questions/۱۱۲۴۸۰۷۳/what-is-the-easiest-way-to-remove-all-packages-installed-by-pip
این دستور رو گفته:
pip freeze | xargs pip uninstall -y
و بعدش برای اطمینان این دستور هم بزن:
pip uninstall virtualenv
بعد دوباره نصبش کن و تست کن:
pip install virtualenv
virtualenv venv
And
virtualenv -p python3 venv
+ محمدرضا نصیری:
دستور اول با sudo هم پرمیژن دینای میده?
ولی دستور دوم برا حذف virtualenv کار کرد
حذف کرد و دوباره نصب کردمالان درست شد و venv ای که میسازه هیچ پکیج رو پیشفرض نصب نمیکنه
ولی باز یه مسئله ای هست
توو ویدئو برایه استاد ۲..۳ تا پکیح پیشفرض نصب میشد
اینکه اونارم نصب نمیکنه مشکلی ایجاد نمیشه؟
اقا حل شد
دمت گرم?
سلاااااااااااااااااااام وقت شما هم بخیر
به مشکل عجیبی خوردید. من تو اینترنت یه خورده سرچ کردم کسی به این مشکل نخورده انگار.
سیستم عامل تون چیه؟ ورژن اش؟ (بنظرم میاد لینوکس هستید)
نسخه پایتون تون؟
نسخه pip تون؟
نسخه virtualenv تون؟
بعد از ساخت virtualenv فعالش میکنید؟ و تو کامند لاین بهتون نشون میده که فعال شده؟
اگر لینوکس هستید نتیجه دستور زیر چیه؟
which python3
گفتید:
بصورت پیشفرض پکیج های زیر رو هم نصب میکنه
یعنی وقت ساخت virtualenv نصب این پکیچ هارو هم نشون تون میده؟ یا اینکه وقتی virtualenv رو فعال میکنید و pip freeze میزنید نشون میده این پکیج ها از قبل نصب هستن؟
سیستم عاملم ubuntu 20.04
pip روی سیستم عامل نسخه 21.0.1
pip روی venv های ساخته شده 20.0.2
python 3.8.5
virtualenv 20.0.17
بله بعد ساخت venv وقتی با دستور زیر فعالش میکنم خروجی زیر رو نشون میده و توو کامندلاین هم فعال میشه
created virtual environment CPython3.8.5.final.0-64 in 1029ms
creator CPython3Posix(dest=/home/death/Projects/Academy/test/venv, clear=False, global=False)
seeder FromAppData(download=False, html5lib=latest, msgpack=latest, pkg_resources=latest, idna=latest, ipaddr=latest, packaging=latest, colorama=latest, certifi=latest, pyparsing=latest, wheel=latest, urllib3=latest, CacheControl=latest, webencodings=latest, pytoml=latest, setuptools=latest, retrying=latest, chardet=latest, distro=latest, contextlib2=latest, appdirs=latest, pep517=latest, lockfile=latest, six=latest, requests=latest, distlib=latest, pip=latest, progress=latest, via=copy, app_data_dir=/home/death/.local/share/virtualenv/seed-app-data/v1.0.1.debian)
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
و پیشفرض پکیج های قید شد رو نصب میکنه بله وقتی venv ساخته شده رو فعال میکنم و pip freeze میزنم این پکیج ها رو نشون میده که نصب شدن..
خروجی دستور which python3 بصورت زیر نمایش داده میشه
/usr/bin/python3