VirtualEnv في PowerShell؟
-
21-09-2019 - |
سؤال
مرحبًا زميل بيثونيستاس ، يبدو أن هناك مشكلة VirtualEnv يستخدم في PowerShell.
عندما أحاول تنشيط بيئتي في PowerShell مثل ..
> env/scripts/تنشيط
.. لا شيء يحدث. (يجب أن يكون موجه shell قد تغير وكذلك متغير المسار.)
أعتقد أن المشكلة هي أن PowerShell يولد CMD جديد. العملية فقط لتشغيل Activate.Bat وبالتالي جعل التغييرات تنشيط. بات لا إلى قذيفة ميت بعد اكتمالها.
هل لديك أي حلول لهذه القضية؟ (أنا متمسك بـ cmd.exe الآن)
المحلول
تحديث: الجواب أدناه قديم. الآن ، فقط استخدم activate.ps1
(عوضا عن activate.bat
) لتفعيل من بيئة PowerShell.
هنا'SA Post الذي يحتوي على نص PowerShell الذي يتيح لك تشغيل ملفات الدُفعات التي تعدل باستمرار متغيرات البيئة الخاصة بهم. ينشر البرنامج النصي أي تغييرات متغيرة للبيئة مرة أخرى إلى بيئة PowerShell Calling.
نصائح أخرى
أحدث إصدار من VirtualEnv يدعم PowerShell خارج الصندوق.
فقط تأكد من الركض:
Scripts\activate.ps1
بدلاً من
Scripts\activate
سوف ينفذ الأخير activate.bat
, الذي لا يعمل على PowerShell.
سيكون العمل السريع هو استدعاء CMD ثم تشغيل Activate.bat من داخل جلسة CMD. علي سبيل المثال:
PS C:\my_cool_env\Scripts> cmd
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\my_cool_env\Scripts>activate.bat
(my_cool_env) C:\my_cool_env\Scripts>
جرب هذا:. .\env\Scripts\activate.ps1
شاهد النقاط والمساحات
يحدث هذا الخطأ بسبب تدبير أمان لن يتيح تنفيذ البرامج النصية على نظامك دون الموافقة عليه. يمكنك القيام بذلك عن طريق فتح PowerShell مع الحقوق الإدارية (ابحث عن PowerShell في القائمة الرئيسية وحدد Run كمسؤول من قائمة السياق) والإدخال:
set-executionpolicy Remotesigned
للمزيد من:http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/
داخل دليل البرامج النصية في مجلد البيئات الافتراضية ، توجد العديد من البرامج النصية للتنشيط التي يمكن استخدامها اعتمادًا على المكان الذي تقوم فيه بتنفيذ الأمر. إذا كنت تحاول تنشيط ENV الظاهري من Windows PowerShell ، فحاول استخدام الأمر التالي:
. .\env\Scripts\activate.ps1
في حالة تلقي خطأ حول برنامج التنشيط الذي يتم تعطيله على نظامك ، ستحتاج أولاً إلى استدعاء تغيير سياسة التنفيذ على نظامك. سيجب القيام بذلك كمسؤول.
لفعل هذا:
1) انقر بزر الماوس الأيمن على تطبيق PowerShell وحدد Run كمسؤول
2) تشغيل الأمر التالي: Set-ExecutionPolicy Unrestricted
3) إعادة تشغيل أمر التنشيط: . .\env\Scripts\activate.ps1
لقد كتبت هذا البرنامج النصي السريع السريع للتعامل مع تنشيطي وبدء تشغيل خادم DEV.
$ep = Get-ExecutionPolicy
if ($ep -eq 'RemoteSigned') {
$root = "C:\Users\ALeven\OneDrive\!code_projects\!django_projects\"
$test = Read-Host -Prompt 'Would you like to activate the python environment? y/n'
if ($test -eq 'y') {
$activatestr = ($root + "\work_venv\Scripts\Activate.ps1")
& $activatestr
}
$test = Read-Host -Prompt 'Would you like to run the python server? y/n'
if ($test -eq 'y') {
$whichserver = Read-Host -Prompt 'Enter the name of the project.'
$path = ($root + $whichserver)
$runserverstr = ($path + "\manage.py")
python.exe $runserverstr runserver
}
} else {
Write-host "Execution Policy does not allow this script to run properly"
Write-host "If you have the proper permissions,"
Write-Host "Please close powershell,"
Write-host "then right click the powershell icon and run as administrator"
Write-host "Once in the powershell environment, execute the following:"
Write-host "Set-ExecutionPolicy RemoteSigned -Force"
}
يتمتع.
مستخدمي Windows
في PowerShell:
- تشغيل PowerShell كمسؤول
- نسخ ولصق هذا الأمر:
set-executionpolicy remotesigned
- أوافق على الرسالة.
وأخيرا ، الجري
your_virtualenv_name\Scripts\activate.ps1
بدلاً من
your_virtualenv_name\Scripts\activate.bat
في CMD فقط تشغيل:
your_virtualenv_name\Scripts\activate.bat