python> Как выполнить мой скрипт в venv (создан на окне) на Linux (VM)? - PullRequest
0 голосов
/ 31 октября 2018

Пожалуйста, помогите мне. Я потратил на это столько раз, но до сих пор не знаю почему. Прежде всего, я бы хотел, чтобы вы знали, что я новичок в программировании и плохо разбираюсь в основах. Также извините за мой английский, который, вероятно, смущает вас всех.

Я создал venv на Pycharm (Windows 10, установлен Python 2.7). И мое рабочее пространство находится на виртуальной машине (Linux Centos6.1, python 2.6 по умолчанию) Я получаю доступ к своей виртуальной машине через интерфейс Samba.

Когда я создал venv и выполнил свой сценарий, я увидел, что консоль сказала, что он использует python.exe (версия 2.7) в моем venv. Поэтому я подумал, что если я перейду ко всему каталогу venv к моему vm linux, Я мог запустить свои скрипты с помощью python2.7.

Но когда я пробовал его на другой виртуальной машине CentOS 5.11, результат был

$> source myvenv/Scripts/activate
[venv]$> ./myscript 
./hello.py: line 1: import: command not found
./hello.py: line 2: import: command not found
./hello.py: line 3: import: command not found
: command not found 
: command not found 
./hello.py: line 6: syntax error near unexpected token `'imported all successfully.''
./hello.py: line 6: `print('imported all successfully.')'

Так что я понял, что он все еще использует python2.4 (по умолчанию centos5.11). Затем я нашел и попробовал некоторые решения, одним из которых было изменение моей переменной VIRTUAL_ENV, поскольку она была создана в Windows10.

vi myvenv/Script/activate
VIRTUAL_ENV="$(if [ "$OSTYPE" "==" "cygwin" ]; then cygpath -u 
'${myWindowsVenvPath}'; else echo 
'${myLinuxVenvPath}'; fi;)"
export VIRTUAL_ENV

но все равно не работает .. (В моем скрипте тоже пробовал shebang #! / Myvenv / Scripts / python)

Наверное, я плохо понимаю концепцию vevn. Я пробовал работать? Если есть какие-либо предложения по ее решению или я ошибся, пожалуйста, дайте мне знать.

Заранее благодарен за ваше мнение.

редакция> Мой скрипт предназначен только для проверки возможности импорта сторонних модулей. (прежде чем я перейду ко всему сценарию вокруг venv) так это ниже,

import pandas
print('it's working') --> to check if python2.7 is running since it has the different syntax for print function.

1 Ответ

0 голосов
/ 08 ноября 2018

Я сам выяснил причину. До сих пор я получал двоичный файл: python.exe подчиняется операционной системе. Поэтому я снова сделал venv на linux, а затем он работает на другой версии linux, что означает, что верхняя версия python может быть выполнена в venv (prerequsite: для этого также требуется libpython2.6.so) по-прежнему остается много проблем с общими библиотеками ... поэтому я пришел к выводу, что я подошел совершенно неправильно.

...