سؤال

مرحبًا زميل بيثونيستاس ، يبدو أن هناك مشكلة 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:

  1. تشغيل PowerShell كمسؤول
  2. نسخ ولصق هذا الأمر: set-executionpolicy remotesigned
  3. أوافق على الرسالة.

وأخيرا ، الجري

your_virtualenv_name\Scripts\activate.ps1

بدلاً من

your_virtualenv_name\Scripts\activate.bat

في CMD فقط تشغيل:

your_virtualenv_name\Scripts\activate.bat
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top