Они делают то же самое. Фактически, документы для распространения модулей Python были только что обновлены , предлагая использовать python -m pip
вместо исполняемого файла pip
, потому что легче сказать, какая версия python будет использоваться для фактического запуска pip
.
Изменить:
Вот еще несколько конкретных «доказательств», за исключением того, что я доверяю своему слову и отчет об ошибке, который я связал:)
Если вы посмотрите на исполняемый скрипт pip
, он просто делает это:
from pkg_resources import load_entry_point
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
Он вызывает load_entry_point
, который возвращает функцию, а затем выполняет это функция. Используемая точка входа называется 'console_scripts'
. Если вы посмотрите файл entry_points.txt для pip
(/usr/lib/python2.7/dist-packages/pip-1.5.4.egg-info/entry_points.txt на моей машине Ubuntu), вы увидите это:
[console_scripts]
pip = pip:main
pip2.7 = pip:main
pip2 = pip:main
Таким образом, возвращаемая точка входа является функцией main
в модуле pip
.
Когда вы запускаете python -m pip
, вы выполняете __main__.py
внутри пакета pip
. Это выглядит так:
import sys
from .runner import run
if __name__ == '__main__':
exit = run()
if exit:
sys.exit(exit)
И функция runner.run
выглядит так:
def run():
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
## FIXME: this is kind of crude; if we could create a fake pip
## module, then exec into it and update pip.__path__ properly, we
## wouldn't have to update sys.path:
sys.path.insert(0, base)
import pip
return pip.main()
Как вы можете видеть, это просто вызывает функцию pip.main
, тоже , Таким образом, обе команды в конечном итоге вызывают одну и ту же функцию main
в pip/__init__.py
.
Вы можете использовать преобразование Insert
:
<resizer>
<plugins>
<add name="AzureReader" connectionString="DataConnectionString"
xdt:Transform="Insert" />
</plugins>
</resizer>
Синтаксис преобразования Web.config для развертывания проекта веб-приложения
Если вы хотите сделать это с помощью XSLT, вот несколько советов, поскольку у меня нет времени прямо сейчас, чтобы выбить это.
match="add[@name='MvcRoutingShim']"
xsl:copy
, а затем выведите элемент добавления AzureReader Это должно вас заставить.
Убедитесь, что у вас есть редактор XML, который позволяет вам делать преобразования, чтобы вы могли экспериментировать локально, пока не получите правильное решение.