Куда в virtualenv пользовательский код идет?

Интерфейс IDisposable действительно для классов, которые содержат неуправляемые ресурсы. Если Ваш класс не содержит неуправляемые ресурсы, почему делают Вас потребность для освобождения ресурсов, прежде чем сборщик "мусора" сделает это? Иначе просто удостоверьтесь, что Ваш объект инстанцируют уже в возможном и выходит из объема как можно скорее.

103
задан nbro 18 November 2017 в 20:08
поделиться

4 ответа

virtualenv предоставляет экземпляр интерпретатора python, не экземпляр приложения. Обычно вы не создаете файлы своего приложения в каталогах, содержащих системный Python по умолчанию, также нет необходимости размещать свое приложение в каталоге virtualenv.

Например, у вас может быть проект, в котором несколько приложений используют один и тот же virtualenv. Или вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

Обычно вы не создаете файлы своего приложения в каталогах, содержащих системный Python по умолчанию, также нет необходимости размещать свое приложение в каталоге virtualenv.

Например, у вас может быть проект, в котором несколько приложений используют один и тот же файл virtualenv. Или вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

Обычно вы не создаете файлы своего приложения в каталогах, содержащих системный Python по умолчанию, также нет необходимости размещать свое приложение в каталоге virtualenv.

Например, у вас может быть проект, в котором несколько приложений используют один и тот же virtualenv. Или вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

Обычно файлы приложения создаются в каталогах, содержащих системный Python по умолчанию, также нет необходимости размещать ваше приложение в каталоге virtualenv.

Например, у вас может быть проект, в котором несколько приложений используют один и тот же файл virtualenv. Или вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

Обычно файлы приложения создаются в каталогах, содержащих системный Python по умолчанию, также нет необходимости размещать ваше приложение в каталоге virtualenv.

Например, у вас может быть проект, в котором несколько приложений используют один и тот же файл virtualenv. Или вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

s нет необходимости размещать ваше приложение в каталоге virtualenv.

Например, у вас может быть проект, в котором несколько приложений используют один и тот же файл virtualenv. Или вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

s нет необходимости размещать ваше приложение в каталоге virtualenv.

Например, у вас может быть проект, в котором несколько приложений используют один и тот же файл virtualenv. Или вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

вы можете тестировать приложение с помощью virtualenv, которое позже будет развернуто с системным Python. Или вы можете упаковывать автономное приложение, в котором может иметь смысл разместить каталог virtualenv где-то внутри самого каталога приложения.

В общем, я не думаю, что есть один правильный ответ на этот вопрос. И что хорошо в virtualenv , так это то, что он поддерживает множество различных вариантов использования: не обязательно должен быть один правильный путь.

87
ответ дан 24 November 2019 в 04:20
поделиться

Поскольку виртуальные виртуальные серверы не могут быть перемещены, на мой взгляд, размещение файлов проекта в каталоге virtualenv - плохая практика. Сам virtualenv - это сгенерированный артефакт разработки / развертывания (вроде как файл .pyc), а не часть проекта; должно быть легко избавиться от него и воссоздать его в любое время или создать новый на новом хосте развертывания и т. д.

Многие люди фактически используют virtualenvwrapper , который удаляет реальные виртуальные возможности из вашего понимания почти полностью, по умолчанию помещая их все рядом в $ HOME / .virtualenvs.

28
ответ дан 24 November 2019 в 04:20
поделиться

Если вы дадите своему проекту setup.py , pip может напрямую импортировать его из системы контроля версий.

Сделайте что-то вроде этого:

$ virtualenv --no-site-packages myproject
$ . myproject/bin/activate
$ easy_install pip
$ pip install -e hg+http://bitbucket.org/owner/myproject#egg=proj

-e поместит проект в myproject / src , но свяжет его с myproject / lib / pythonX.X / site-packages / , поэтому любые внесенные вами изменения будут немедленно приняты в модулях, которые импортируют их из ваших локальных site-packages . Бит #egg сообщает pip, какое имя вы хотите дать создаваемому им пакету egg.

Если вы не используете - no-site-packages , будьте осторожны, чтобы указать, что вы хотите установить pip в virtualenv с параметром -E

2
ответ дан 24 November 2019 в 04:20
поделиться

Если у вас есть строка с именем типа, вы можете сделать что-то вроде этого:

Assembly execAsm = Assembly.GetExecutingAssembly();
object instance = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(execAsm.FullName, "RipperWorkbench.Classes.LoadManager"); // the type name cam come from a variable or someplace else.

, тогда вы можете привести ее к нужному типу

Master.Enterprise ent = obj as Master.Enterprise;
if (obj != null) 
{
     ...
}

Или, альтернативно, пусть объект реализует интерфейс: Если у вас много зависимостей, мне придется выполнять одну и ту же установку снова и снова.

$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python 
>>> import mypackage2
>>>

Для пользователей, которым регулярно приходится устанавливать и отключать virtualenvs, имеет смысл взглянуть на virtualenvwrapper.

http://pypi.python.org/pypi/virtualenvwrapper

С помощью virtualenvwrapper вы можете

* create and delete virtual environments

* organize virtual environments in a central place

* easily switch between environments

Вам больше не нужно беспокоиться о том, где находятся ваши виртуальные серверы, когда вы работаете над проектами «foo» и «bar»:

  /foo
    /mypackage1
      __init__.py
  /bar
    /mypackage2
      __init__.py

Вот как вы начинаете работу над проектом «foo»:

$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>

Затем переходите на проект «bar» "так просто:

$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>

Довольно красиво, не правда ли?

55
ответ дан 24 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: