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 đề: là /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.
Bạn đã bao giờ tìm ra điều này chưa? –
Không. Giải pháp thay thế - thêm/usr/local/bin vào cấu hình Run. –
@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 ... –