Здійснення `#! / Usr / bin / env python` роботи в Windows


14

Я використовую Bash в Windows, наданий MSYS.

Я спробував запустити файл Python з шебангом #!/usr/bin/env python, але я отримав це повідомлення про помилку:

/usr/bin/env: python: No such file or directory

Що я можу зробити, щоб зробити цю роботу?

Я знаю, що можу запустити файл Python за pythonдопомогою суфікса, але також хочу, щоб він працював і без суфікса.

Відповіді:


8

Використовуйте правильний шлях, де замість цього встановлений Python, наприклад:

#!c:/Python/python.exe

Якщо у вашій системі є підтримка шляху Unix (я не знайомий з MSYS), ви завжди можете ввести шлях до свого pythonвиконуваного файлу, тобто виводу which python.


2
Або ти можеш використовувати env, як це робить аскер.
Ігнасіо Васкес-Абрамс

Я не можу змінити шебанг, це частина проекту, в якому беруть участь інші програмісти, які працюють на Linux та Mac.
Рам Рахум

@RamRachum Що таке результат which envі which pythonі type python?
Даніель Бек


0

Що відбувається під час запуску (із оболонки):

$ /usr/bin/env python

..?

Якщо він починає інтерактивний сеанс python, тоді можна знайти python. (Ви також можете просто запустити:) type python. Якщо він друкує "немає такого файлу чи каталогу", він pythonне знайдеться у вашій PATH. Перевірте, чи можна змінити наступне, щоб вирішити проблему (пробіли на шляху / до / python, ймовірно, спричинить проблеми):

$ export PATH=$PATH:/path/to/python
$ /usr/bin/env python

0

Я виявився невідповідністю між activate.shфайлом Virtualenv та MSYSGIT. Він ніколи не призначався для роботи в Windows.


0

Останні версії Windows 10 підтримують встановлення підсистем Linux. Якщо ви біжите звідти, шляхи повинні бути правильними.

Це повинно бути робочим рішенням, якщо ви добре працюєте з цим шляхом.


0

Корінь проблеми полягає в тому, що прогалини в shebangs інтерпретуються як поставляючи додаткові аргументи для виконуваного файлу, тому C:\Program Files\Python\python.exeстає видно , як C:\Programдано в Files\Python\python.exeякості аргументу.

Найкраще рішення для цього, тому що Windows ЛЮБИТЬ пробіли в $HOMEкаталозі та Program Filesінших місцях, навіть якщо він дійсно може порушити речі в cmd.exe та Powershell та інших інструментах, це:

Встановіть Python C:\Pythonі додайте C:\Pythonпапку, в якій python.exeживе, та Scriptsкаталог, який знаходиться всередині нього, до PATHзмінної середовища на рівні системи чи користувача.

Якщо вам потрібен Python 2.7.x і 3.x співіснувати, встановити їх в C:\Python27і C:\Python36й C:\Python37і перейменувати python.exeв python2.exe, python36.exe, python37.exeі т.д. , і додати кожен з цих папок і їх Scriptsпапок в PATH. Ви можете визначити, для якої з версій Python 3 ви хочете стати "за замовчуванням", а також зробити копію в цій папці python3.exeдля обробки будь-яких сценаріїв, які використовують !#/usr/bin/env python3.

Якщо у вашому домашньому каталозі користувача є пробіл, у вас також можуть виникнути проблеми, якщо ви використовуєте pip install --user somepackageсинтаксис. Значення --userза замовчуванням у вашому домашньому каталозі, а також простір збільшить речі і в цьому випадку. Обхідний описано тут , але зводиться до експорту PYTHONUSERBASE у вашому середовищі.

export PYTHONUSERBASE=/myappenv
pip install --user SomePackage

або в Windows (Powershell):

$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.