2009-09-01 35 views
17

Hi pythonistas đồng nghiệp, có vẻ như là một vấn đề khi virtualenv được sử dụng trong PowerShell.virtualenv trong PowerShell?

Khi tôi cố gắng để kích hoạt môi trường của tôi trong PowerShell như ..

> env/scripts/kích hoạt

.. có gì xảy ra. (dấu nhắc trình bao nên đã thay đổi cũng như biến env. PATH.)

Tôi đoán vấn đề là PowerShell sinh ra một cmd mới. quá trình chỉ để chạy activation.bat do đó, rendering các thay đổi activate.bat làm cho shell chết sau khi nó hoàn thành.

Bạn có giải pháp nào cho sự cố không? (Tôi đang gắn bó với cmd.exe bây giờ)

Trả lời

9

Here 's một bài đăng chứa tập lệnh Powershell cho phép bạn chạy các tệp bó liên tục sửa đổi biến môi trường của chúng. Kịch bản tuyên truyền bất kỳ biến môi trường nào thay đổi trở lại môi trường PowerShell đang gọi.

+0

Cảm ơn Vinay, giải thích rõ vấn đề. –

+0

Tác phẩm này hoạt động nhưng không thể thêm đối số nhắc. Sẽ phải có một activation.ps1 có thể gọi Write-Host trước khi dấu nhắc được thiết lập. –

+2

Câu trả lời này không còn hợp lệ vì virtualenv hỗ trợ quyền hạn của hộp thoại như được chỉ ra trong http://stackoverflow.com/questions/1365081/virtualenv-in-powershell/10030999#10030999 –

10

Một công việc nhanh chóng xung quanh sẽ là gọi cmd và sau đó chạy activate.bat của bạn từ trong phiên cmd. Ví dụ:

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> 
+0

Điều này làm việc cho tôi.Dễ dàng hơn nhiều. Cảm ơn! – irene

45

The latest version of virtualenv hỗ trợ PowerShell out-of-the-box.

Chỉ cần chắc chắn rằng bạn chạy:

Scripts\activate.ps1 

thay vì

Scripts\activate 

Sau đó sẽ thực hiện activate.bat, mà không hoạt động trên PowerShell.

+17

Bạn có thể cần chạy 'set-executionpolicy RemoteSigned' để cho phép các tập lệnh chạy (được đặt thành' Restricted' before) [docs] (http://technet.microsoft.com/en-us/library/ee176961.aspx) –

+0

và chỉ cần gõ 'hủy kích hoạt' để hoàn tác –

+0

Có cách nào để thay đổi màu của lời nhắc bằng cách sử dụng phương pháp này không? –

1

thử điều này: . .\env\Scripts\activate.ps1 chấm hồ và không gian

+1

. \ [My-venv] \ Scripts \ activate.ps1 đã hoạt động đối với tôi. –

2

Lỗi này xảy ra do một biện pháp an ninh mà sẽ không cho phép các kịch bản được thực hiện trên hệ thống của bạn mà không cần bạn đã chấp nhận nó. Bạn có thể làm như vậy bằng cách mở một PowerShell với quyền quản trị (tìm kiếm cho PowerShell trong menu chính và chọn Run as administrator từ menu ngữ cảnh) và nhập:

Set-ExecutionPolicy RemoteSigned

để biết thêm: http://www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/

0

Tôi đã viết tập lệnh nhỏ nhanh này để xử lý việc kích hoạt và khởi động máy chủ dev của mình.

$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" 

} 

Thưởng thức.