2015-11-25 13 views
7

Chạy này trên Mac OS X El Capitan 10.11.1 trong PyCharm 5 (Điều này đã làm việc tốt trong PyCharm 4.5)Tại sao PyCharm loại bỏ/usr/local/bin trên máy Mac khi sử dụng Python môi trường ảo

import os 
print("PATH:", os.environ.get("PATH")) 

Nếu tôi chạy chương trình này với bộ Interpreter dự án PyCharm để hệ thống của Python: /Library/Frameworks/Python.framework/Versions/3.4/bin/python3, đây là sản phẩm tôi nhận được:

PATH: /Users/agautam/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 

Nếu tôi chạy chương trình tương tự với thông dịch viên dự án thiết lập để một môi trường ảo /Users/agautam/work/my-awesome-py-project/venv/bin/python3 tôi nhận được :

PATH: /usr/bin:/bin:/usr/sbin:/sbin:/Users/agautam/work/my-awesome-py-project/venv/bin 

Các Vấn đề:/usr/local/bin đi mất tích khi tôi sử dụng một môi trường ảo.

Dưới đây là cách env ảo được tạo ra:

import sys, platform, subprocess 
from os.path import dirname, join 

root_path = join(dirname(__file__), '../..') 
venv_path = join(root_path, 'venv') 


def build_virtual_environment(): 
    print("Building virtual env from Python version", sys.version) 

    # Create a fresh virtual env 
    import venv 
    builder = venv.EnvBuilder(with_pip=True) 
    builder.create(venv_path) 

    # Install dependencies in new virtual env 
    run_in_venv('python', ['-m', 'pip', 'install', '--upgrade', 'pip']) # Upgrade pip itself 
    run_in_venv('pip', ['install', '-r', join(root_path, 'requirements.txt')]) 


def run_in_venv(cmd, args): 
    if platform.system() == 'Windows': 
     cmd += '.exe' 
     virtual_env_bin_path = r'venv/Scripts' 
    else: 
     virtual_env_bin_path = r'venv/bin' 

    subprocess.check_call([join(root_path, virtual_env_bin_path, cmd)] + args) 


if __name__ == '__main__': 
    build_virtual_environment() 

Thông tin thêm: Chạy dịch viên python từ dòng lệnh tạo ra kết quả chính xác cùng (vì vậy có vẻ như là một vấn đề pycharm của nó):

$ /Library/Frameworks/Python.framework/Versions/3.4/bin/python3 
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.environ.get("PATH") 
'/Users/agautam/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin' 
>>> 

$ ./venv/bin/python3 
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.environ.get("PATH") 
'/Users/agautam/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin' 
>>> 

Mọi trợ giúp/thông tin/con trỏ sẽ được đánh giá cao.

+0

Bạn đã bao giờ tìm ra điều này chưa? –

+0

Không. Giải pháp thay thế - thêm/usr/local/bin vào cấu hình Run. –

+0

@AjayGautam, bạn có thể cụ thể với ý nghĩa của bạn bằng cách thêm X vào cấu hình Chạy không? Đó thậm chí có thể là câu trả lời ... –

Trả lời

0

Điều này đã được báo cáo là lỗi đối với JetBrains, PY-17816. Nó hiện đã được khắc phục kể từ bản phát hành 2017.1.2 (phiên bản 171.4249.47) trên mỗi release notes.

Các vấn đề liên quan