Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Python-projektek fejlesztése során előfordulhat, hogy egy parancsablakra vált, hogy meghatározott szkripteket vagy modulokat futtasson, pip parancsokat futtasson, vagy más eszközöket használjon a kóddal. A munkafolyamat javítása érdekében egyéni parancsokat adhat hozzá a Python-projekt menüjéhez a Visual Studióban. Az egyéni Python-parancsok egy konzolablakban vagy a Visual Studio Kimeneti ablakában futtathatók. Normál kifejezések használatával arra is utasíthatja a Visual Studiót, hogyan elemezheti a parancs kimenetéből származó hibákat és figyelmeztetéseket.
Előfeltételek
- A Windowson telepített Visual Studio a Python-számítási feladatok támogatásával van telepítve. További információ: Python-támogatás telepítése a Visual Studióban.
A Visual Studio for Mac nem támogatott. A Visual Studio Code Windowson, Macen és Linuxon jól működik a Pythonnal az elérhető bővítményeken keresztül.
Egyéni parancsok felfedezése
A Python-projektmenü alapértelmezés szerint két parancsot tartalmaz, a PyLint ésa Run Mypy parancsot:
Az Ön által definiált egyéni Python-parancsok ugyanabban a menüben jelennek meg. Az egyéni parancsok hivatkozhatnak Python-fájlra, Python-modulra, beágyazott Python-kódra, tetszőleges végrehajtható fájlra vagy pip-parancsra. Megadhatja a parancs futtatásának módját és helyét is.
Egyéni parancsokat többféleképpen is hozzáadhat:
Egyéni parancsok definiálása egy Python-projektfájlban (.pyproj) közvetlenül. Ezek a parancsok az adott projektre vonatkoznak.
Egyéni parancsok definiálása egy célfájlban (.targets). A fájlban található parancsokat egyszerűen importálhatja, hogy több projekttel is használhassa őket.
Hozzon létre egy Python-projektet egy egyéni Python-parancsokat definiáló projektsablonból a Visual Studióban.
Egyes Python-projektsablonok a Visual Studióban egyéni parancsokat adnak hozzá egy célfájl használatával. A Bottle Web Project és a Flask Web Project-sablonok két parancsot adnak hozzá, a Start servert és a Start hibakeresési kiszolgálót. A Django Web Project sablon hozzáadja ezeket a parancsokat és még sok mást:
Projekt újrabetöltése egyéni parancsok eléréséhez
Ha egy projekt meg van nyitva a Visual Studióban, ha módosítja a megfelelő projektfájlt egy szerkesztőben, újra kell betöltenie a projektet a módosítások alkalmazásához. Hasonló módon, miután egyéni Python-parancsokat definiált egy Python-projektfájlban, újra be kell töltenie a Python-projektet, hogy a parancsok megjelenjenek a Python-projekt menüjében. A célfájlban definiált egyéni parancsok módosításakor újra kell építenie a teljes Visual Studio-megoldást minden olyan projekthez, amely a célfájlt importálja.
Gyakori módszer a Python-projektfájl módosítása közvetlenül a Visual Studióban:
Nyissa meg a Python-projektet a Visual Studióban. (Amikor megnyit egy projektet a Visual Studióban, a projekt alapértelmezés szerint betöltődik .)
A Megoldáskezelőben kattintson a jobb gombbal a Python-projektre, és válassza a Projekt eltávolítása lehetőséget.
A Visual Studio eltávolítja a projektet, és megnyitja a megfelelő Python-projektfájlt (.pyproj) a szerkesztőben.
Ha a projektfájl nem nyílik meg, kattintson ismét a jobb gombbal a Python-projektre, és válassza a Projektfájl szerkesztése lehetőséget:
Módosítsa a projektfájlt a Visual Studio szerkesztőjében, és mentse a munkáját.
A Megoldáskezelőben kattintson a jobb gombbal a kiürített projektre, és válassza a Projekt betöltése lehetőséget. Ha a projektfájl módosításainak mentése nélkül próbálja újra betölteni a projektet, a Visual Studio megkéri, hogy végezze el a műveletet.
Az egyéni parancsok fejlesztése során a kiürítési-szerkesztési-mentési újrabetöltési folyamat unalmassá válhat. A hatékonyabb munkafolyamat magában foglalja a projekt egyidejű betöltését a Visual Studióban, és a Python-projektfájl külön szerkesztőben való megnyitását. Bármilyen szerkesztőt használhat, például a Visual Studio egy másik példányát, a Visual Studio Code-ot, a Jegyzettömbet stb. Miután mentette a módosításokat a szerkesztőben, és visszaállt a Visual Studióra, a Visual Studio észleli a megnyitott projekt projektfájljának módosításait, és felszólítja a művelet végrehajtására:
Válassza az Összes újratöltése vagy újratöltése lehetőséget, és a Visual Studio azonnal alkalmazza a projektfájl módosításait a megnyitott projektre.
Egyéni parancsok hozzáadása projektfájllal
Az alábbi eljárás bemutatja, hogyan hozhat létre egyéni parancsokat úgy, hogy hozzáadja a definíciót a Python-projektfájlban (.pyproj), és újra betölti a projektet a Visual Studióban. Az egyéni parancs közvetlenül futtatja egy projekt indítási fájlját a python.exe parancs használatával, amely alapvetően megegyezik a Visual Studio fő eszköztárának Indítás hibakeresés nélkül> lehetőségével.
A Visual Studióban hozzon létre egy Python-CustomCommands nevű új Python-projektet a Python-alkalmazássablon használatával. Útmutatásért tekintse meg a rövid útmutatót: Python-projekt létrehozása sablonból.
A Visual Studio létrehozza a Python-projektet, és betölti azt a munkamenetbe. A projektet a projektfájlon (.pyproj) keresztül konfigurálhatja. Ez a fájl csak akkor látható a Visual Studióban, ha a projekt meg van nyitva, de nincs eltávolítva. A projekt egy Python-fájllal (.py) is rendelkezik az alkalmazáskódhoz.
Nyissa meg a Python_CustomCommands.py alkalmazásfájlt a szerkesztőben, és adja hozzá a következő kódot:
print("Hello custom commands")A Megoldáskezelőben kattintson a jobb gombbal a Python-projektre, válassza a Pythont, és figyelje meg a helyi menü parancsát. Jelenleg a helyi menüben az egyetlen parancs a PyLint futtatása és a Mypy futtatása. Egyéni parancsok definiálásakor ezek is megjelennek ezen a menüben.
Nyisson meg egy külön szerkesztőt a Visual Studio-munkameneten kívül, és nyissa meg a Python-projektfájlt (Python-CustomCommands.pyproj) a szerkesztőben. (Mindenképpen nyissa meg a projektfájlt (.pyproj), és ne a Python-alkalmazásfájlt (.py).)
A projektfájlban keresse meg a záró
</Project>elemet a fájl végén, és adja hozzá a következő XML-t közvetlenül a záró elem elé:<PropertyGroup> <PythonCommands> $(PythonCommands); </PythonCommands> </PropertyGroup>Mentse a projektfájl módosításait, és váltson vissza a Visual Studióba. A Visual Studio észleli a projektfájl módosításait, és cselekvésre kéri. A parancssorban válassza az Újratöltés lehetőséget, ha frissíteni szeretné a megnyitott projektet a projektfájl módosításaival.
A Megoldáskezelőben kattintson a jobb gombbal a Python-projektre, válassza a Pythont, és ellenőrizze a helyi menü parancsát.
A helyi menüben továbbra is csak a PyLint és a Run Mypy parancsok láthatók. A projektfájlhoz most hozzáadott kód egyszerűen replikálja a
<PythonCommands>parancsot tartalmazó alapértelmezett tulajdonságcsoportot. A következő lépésben további kódot ad hozzá az egyéni parancshoz.Váltson arra a szerkesztőre, ahol frissíti a projektfájlt. Adja hozzá a következő
<Target>elemdefiníciót az elemhez<Project>. A<Target>definíciót elhelyezheti a korábban ismertetett<PropertyGroup>definíció előtt vagy után.Ez az
<Target>elem egy egyéni parancsot határoz meg a projekt indítási fájljának futtatásához (amelyet a StartupFile tulajdonság azonosít) apython.exekonzolablakban található paranccsal. Az attribútumdefinícióExecuteIn="consolepause"egy olyan konzolt használ, amely megvárja, amíg kiválaszt egy kulcsot a konzolablak bezárásához.<Target Name="Example_RunStartupFile" Label="Run startup file" Returns="@(Commands)"> <CreatePythonCommandItem TargetType="script" Target="$(StartupFile)" Arguments="" WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="consolepause"> <Output TaskParameter="Command" ItemName="Commands" /> </CreatePythonCommandItem> </Target>Cserélje le a
<PythonCommands>tulajdonságcsoportot (az 5. lépésben hozzáadott) a következő XML-fájlra. Ez a szintaxis határozza meg azName<Target>elem attribútumát, amely hozzáadja az egyéni parancsot a Python helyi menüjéhez. A parancs az Indítási fájl futtatása menücímkével rendelkezik.<PythonCommands> $(PythonCommands); Example_RunStartupFile </PythonCommands>Jótanács
Ha azt szeretné, hogy az egyéni parancs megjelenjen a helyi menüben a jogkivonatban
$(PythonCommands)definiált alapértelmezett parancsok előtt, helyezze a<Target>parancs szintaxisát a jogkivonat elé.Mentse a projektfájl módosításait, és váltson vissza a Visual Studióba. A parancssorban töltse be újra a projektet.
A Megoldáskezelőben kattintson a jobb gombbal a Python-projektre, válassza a Pythont, és ellenőrizze újra a helyi menü parancsát.
Most az egyéni futtatás indítási fájl parancsa a menüben található. Ha nem látja az egyéni parancsot, győződjön meg arról, hogy hozzáadta az
Name<Target>elem attribútumértékét az elemhez a<PythonCommands>9. lépésben leírtak szerint. Tekintse át a cikk későbbi , Hibaelhárítás szakaszában felsorolt szempontokat is.Válassza az Indítási fájl futtatása parancsot. Megnyílik egy konzolablak, és megjeleníti a Hello egyéni parancsok szövegét, majd nyomja le bármelyik billentyűt a folytatáshoz. Erősítse meg a kimenetet, és zárja be a konzolablakot.
Megjegyzés:
Az egyéni parancsszkript a Python-projekt aktivált környezetében fut.
Váltson a szerkesztői nézetre a projektfájlt tartalmazó ablakkal. Az
<Target>elem definíciójában (hozzáadva a 8. lépésben), módosítsa azExecuteInattribútum értékét a következőre:output.<CreatePythonCommandItem ... ExecuteIn="output"> ... </CreatePythonCommandItem>Mentse a módosításokat, váltson vissza a Visual Studióba, és töltse be újra a projektet.
Válassza újra az indítási fájl egyéni parancsát a Python helyi menüjéből. A program kimenete most nem konzolablak, hanem a Visual Studio Kimenet ablakában jelenik meg:
További egyéni parancsok hozzáadásához kövesse ugyanezt a folyamatot:
Adjon meg egy megfelelő
<Target>elemet az egyéni parancshoz a projektfájlban.Adja hozzá az
Name<Target>elem attribútumértékét a<PythonCommands>tulajdonságcsoporthoz.Mentse a módosításokat a projektfájlba.
Töltse újra a projektet a Visual Studióban.
Projekttulajdonságok használata
Ha az elemattribútum-értékekben <Target> lévő projekttulajdonságokra vagy környezeti változókra szeretne hivatkozni, használja a tulajdonság nevét egy $() jogkivonaton belül, például $(StartupFile) és $(MSBuildProjectDirectory). További információért látogasson el a MSBuild tulajdonságokrészhez.
Ha olyan parancsot hív meg, amely ($StartupFile) olyan projekttulajdonságokat használ, mint a StartupFile tulajdonság, és a parancs meghiúsul, mert a jogkivonat nincs meghatározva, a Visual Studio letiltja a parancsot, amíg újra be nem tölti a projektet. Ha módosítja a tulajdonságdefiníciót módosító projektet, a módosítások nem frissítik a kapcsolódó parancs állapotát. Ebben az esetben újra kell töltenie a projektet.
A célelem< szerkezetének ismertetése >
Az elem használatával <Target> definiálhatja az egyéni parancsok részleteit. Az elem általános formája a <Target> következő pszeudokódban jelenik meg:
<Target Name="Name1" Label="Display Name" Returns="@(Commands)">
<CreatePythonCommandItem Target="filename, module name, or code"
TargetType="executable/script/module/code/pip"
Arguments="..."
ExecuteIn="console/consolepause/output/repl[:Display name]/none"
WorkingDirectory="..."
ErrorRegex="..."
WarningRegex="..."
RequiredPackages="...;..."
Environment="...">
<!-- Output always appears in this form, with these exact attributes -->
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Célattribútumok
Az alábbi táblázat az <Target> elemattribútumokat sorolja fel.
| Attribute | Kötelező | Description |
|---|---|---|
Name |
Igen | A Visual Studio-projekten belüli parancs azonosítója. Ezt a nevet hozzá kell adni a <PythonCommands> tulajdonságcsoporthoz ahhoz, hogy a parancs megjelenjen a Python helyi menüjében. |
Label |
Igen | A Python helyi menüjében megjelenő felhasználói felület megjelenítendő neve. |
Returns |
Igen | A visszaadott információknak tartalmazniuk kell a @(Commands) tokent, amely azt jelzi, hogy a cél parancs. |
"CreatePythonCommandItem" attribútumok
Az <Target> elem tartalmaz <CreatePythonCommandItem> és <Output> tartalmaz elemeket, amelyek meghatározzák az egyéni parancs részletes viselkedését. Az alábbi táblázat az elérhető <CreatePythonCommandItem> elemattribútumokat sorolja fel. Az összes attribútumérték nem érzékeny a kis- és nagybetűkre.
Attribute |
Kötelező | Description |
|---|---|---|
TargetType |
Igen | Megadja, hogy az Target attribútum mit tartalmaz, és hogyan használja az értéket az Arguments attribútummal együtt: - executable: Futtassa az Target attribútumban elnevezett végrehajtható fájlt az attribútumban lévő Arguments érték hozzáfűzésével, mintha közvetlenül a parancssorban adták volna meg. Az érték csak argumentumok nélküli programnevet tartalmazhat. - script: Futtassa a python.exe parancsot az Target attribútum fájlnevével, majd kövesse a Arguments attribútum értékét. - module: Futtassa a python -m parancsot, majd adja meg a modul nevét az Target attribútumban, és az értéket a Arguments attribútumban. - code: Futtassa az attribútumban Target található beágyazott kódot. Hagyja figyelmen kívül az Arguments attribútum értékét. - pip: Futtassa a pipet az Target attribútumban lévő paranccsal, majd a Arguments attribútumban lévő értékkel. Ha az ExecuteIn attribútum be van állítva output, a pip feltételezi, hogy a kérés a install parancs futtatása, és az Target attribútumot használja csomagnévként. |
Target |
Igen | Megadja a használni kívánt fájlnevet, modulnevet, kódot vagy pip parancsot az attribútum értékétől TargetType függően. |
Arguments |
Opcionális | A Target attribútummal használható argumentumok karaktersorozata (ha van ilyen). - Ha az TargetType attribútum értéke script, akkor a Arguments érték a Python-programnak lesz megadva a python.exe parancs helyett. Ha az TargetType attribútum értéke code, figyelmen kívül hagyják az Arguments értéket. |
ExecuteIn |
Igen | Azt a környezetet adja meg, amelyben futtatni szeretné a parancsot: - console: (Alapértelmezett) Úgy futtatja az Target attribútumot az Arguments értékkel, mintha közvetlenül a parancssorba lennének beírva. Amíg az Target attribútum fut, megjelenik egy parancsablak, és automatikusan bezáródik. - consolepause: Ugyanaz a viselkedés, mint console, de az ablak bezárása előtt vár egy billentyűleütésre. - output: Futtatja az Target attribútumot, és megjeleníti az eredményeket a Visual Studio Output ablakában. Ha az TargetType attribútum az pip, a Visual Studio az Target attribútumot használja csomagnévként, és hozzáfűzi az Arguments attribútum értékét. - repl: Az attribútumot a TargetPython Interaktív ablakban futtatja. Az ablak címéhez az opcionális megjelenítendő név használatos. - none: Ugyanaz a viselkedés, mint a console. |
WorkingDirectory |
Opcionális | A parancs futtatásához használt mappát azonosítja. |
ErrorRegex WarningRegEx |
Opcionális | Csak akkor használatos, ha az ExecuteIn attribútum értéke output. Mindkét attribútumérték egy reguláris kifejezést ad meg, amelyet a Visual Studio használ a parancs kimenetének elemzéséhez, valamint a hibák és figyelmeztetések megjelenítéséhez a Hibalista ablakban. Ha ezek az attribútumok nincsenek megadva, a parancs nem érinti a Hibalista ablakot. A Visual Studio elvárásairól további információt a named capture groups (Elnevezett rögzítési csoportok) című témakörben talál. |
RequiredPackages |
Opcionális | A parancs csomagkövetelményeinek listáját a requirements.txt fájl (pip.readthedocs.io) formátumával adja meg. A PyLint futtatása parancs például a formátumot pylint>=1.0.0adja meg. A parancs futtatása előtt a Visual Studio megerősíti, hogy a listában szereplő összes csomag telepítve van. A Visual Studio pip használatával telepíti a hiányzó csomagokat. |
Environment |
Opcionális | Azok a környezeti változók, amelyeket definiálni kell a parancs futtatása előtt. Minden változó a \<NAME>=\<VALUE> formátumot használja, és több változót pontosvesszővel választanak el. A több értékkel rendelkező változókat egy vagy két idézőjelben kell tárolni, ahogyan a .'NAME=VALUE1;VALUE2' |
Elnevezett rögzítési csoportok reguláris kifejezésekhez
Amikor a Visual Studio elemzi az egyéni parancskimenet hibáit és figyelmeztetéseit, elvárja, hogy a reguláris kifejezések és ErrorRegex attribútumértékek WarningRegex a következő elnevezett csoportokat használják:
-
(?<message>...): A hiba szövege. -
(?<code>...): Hibakód értéke. -
(?<filename>...): Annak a fájlnak a neve, amelyhez a hibát jelentik. -
(?<line>...): Annak a fájlnak a sorszáma, amelynél a hiba jelentve van. -
(?<column>...): A fájl azon helyének oszlopszáma, amelyhez a hibát jelentik.
A PyLint például a következő formátumú figyelmeztetéseket állítja elő:
************* Module hello
C: 1, 0: Missing module docstring (missing-docstring)
Annak érdekében, hogy a Visual Studio kinyerje a helyes információkat ezekből a figyelmeztetésekből, és megjelenítse őket a Hibalista ablakban, a WarningRegex attribútumérték a Pylint futtatása parancshoz a következő:
^(?<filename>.+?)\((?<line>\d+),(?<column>\d+)\): warning (?<msg_id>.+?): (?<message>.+?)$]]
Megjegyzés:
A msg_id attribútumérték szintaxisa valójában WarningRegex kellene, hogy legyen, ahogyan azt a code leírja.
Egyéni parancsok importálása célfájllal
Ha egyéni parancsokat definiál egy Python-projektfájlban, a parancsok csak az adott projekt számára érhetők el. Ha egyéni parancsokat szeretne létrehozni, és több projektben szeretné használni őket, definiálhatja a <PythonCommands> tulajdonságcsoportot egy célfájl (<Target>) összes elemével, majd importálhatja a fájlt a Python-projektekbe.
A célfájl ugyanazt a formátumot és szintaxist használja az egyéni parancsok definiálásához a Python-projektfájlhoz (.pyproj) leírtak szerint. A konfigurálni kívánt gyakori elemek közé tartoznak
<PythonCommands>a következők<Target><CreatePythonCommandItem><Output>:<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <PythonCommands> $(PythonCommands); <!-- Additional command names --> </PythonCommands> </PropertyGroup> <Target Name="..." Label="..." Returns="@(Commands)"> <!-- CreatePythonCommandItem and Output elements... --> </Target> <!-- Any number of additional Target elements--> </Project>Ha célfájlt szeretne importálni a projektbe, vegyen fel egy
<Import Project="(path)">elemet a<Project>projektfájl elemébe.Ha például egy CustomCommands.targets nevű projektfájllal rendelkezik a Python-projekt egyik célmappájában , adja hozzá a következő kódot a projektfájlhoz:
<Import Project="targets/CustomCommands.targets"/>Ha a projektfájl importál egy célfájlt, és módosítja a célfájlt, miközben a projekt meg van nyitva a Visual Studióban, újra kell építenie a projektet tartalmazó Visual Studio-megoldást , és nem csak a projektet.
Példaparancsok
Az alábbi szakaszokban példakódot talál, amellyel egyéni parancsokat határozhat meg a Python-projektekhez.
PyLint futtatása (modulcél)
A Következő kód jelenik meg a Microsoft.PythonTools.targets fájlban:
<PropertyGroup>
<PythonCommands>$(PythonCommands);PythonRunPyLintCommand</PythonCommands>
<PyLintWarningRegex>
<![CDATA[^(?<filename>.+?)\((?<line>\d+),(?<column>\d+)\): warning (?<msg_id>.+?): (?<message>.+?)$]]>
</PyLintWarningRegex>
</PropertyGroup>
<Target Name="PythonRunPyLintCommand"
Label="resource:Microsoft.PythonTools.Common;Microsoft.PythonTools.Common.Strings;RunPyLintLabel"
Returns="@(Commands)">
<CreatePythonCommandItem Target="pylint.lint"
TargetType="module"
Arguments=""--msg-template={abspath}({line},{column}): warning {msg_id}: {msg} [{C}:{symbol}]" -r n @(Compile, ' ')"
WorkingDirectory="$(MSBuildProjectDirectory)"
ExecuteIn="output"
RequiredPackages="pylint>=1.0.0"
WarningRegex="$(PyLintWarningRegex)">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Pip telepítésének futtatása adott csomaggal (pip cél)
A következő parancs futtatja a pip install my-package parancsot a Visual Studio Output ablakában. A csomag fejlesztésekor és a telepítés tesztelésekor használhat ilyen parancsokat. Az <Target> elem a install csomag nevét tartalmazza, nem pedig a parancsot, amit akkor feltételezünk, ha az ExecuteIn="output" attribútumdefiníciót használjuk.
<PropertyGroup>
<PythonCommands>$(PythonCommands);InstallMyPackage</PythonCommands>
</PropertyGroup>
<Target Name="InstallMyPackage" Label="pip install my-package" Returns="@(Commands)">
<CreatePythonCommandItem Target="my-package" TargetType="pip" Arguments=""
WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="output">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Elavult pipcsomagok megjelenítése (pip cél)
A következő parancs a list függvénnyel futtatja a pipet az elavult pipcsomagok azonosításához:
<PropertyGroup>
<PythonCommands>$(PythonCommands);ShowOutdatedPackages</PythonCommands>
</PropertyGroup>
<Target Name="ShowOutdatedPackages" Label="Show outdated pip packages" Returns="@(Commands)">
<CreatePythonCommandItem Target="list" TargetType="pip" Arguments="-o --format columns"
WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="consolepause">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Futtatható fájl futtatása consolepause-szal
A következő parancs futtatja a függvényt where a Python-fájlok helyének megjelenítéséhez a projektmappából kiindulva:
<PropertyGroup>
<PythonCommands>$(PythonCommands);ShowAllPythonFilesInProject</PythonCommands>
</PropertyGroup>
<Target Name="ShowAllPythonFilesInProject" Label="Show Python files in project" Returns="@(Commands)">
<CreatePythonCommandItem Target="where" TargetType="executable" Arguments="/r . *.py"
WorkingDirectory="$(MSBuildProjectDirectory)" ExecuteIn="output">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Kiszolgáló futtatása és hibakeresési kiszolgálóparancsok futtatása
A Start Server és a Start hibakeresési kiszolgálói parancsok webes projektekhez való definiálásához tekintse meg a Microsoft.PythonTools.Web.targets adattárat a GitHubon.
Csomag telepítése fejlesztéshez
A következő kód futtatja a pipet a csomagok telepítéséhez:
<PropertyGroup>
<PythonCommands>PipInstallDevCommand;$(PythonCommands);</PythonCommands>
</PropertyGroup>
<Target Name="PipInstallDevCommand" Label="Install package for development" Returns="@(Commands)">
<CreatePythonCommandItem Target="pip" TargetType="module" Arguments="install --editable $(ProjectDir)"
WorkingDirectory="$(WorkingDirectory)" ExecuteIn="Repl:Install package for development">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Az fxthomas/Example.pyproj.xml (GitHub), engedélyekkel használva.
Windows-telepítő létrehozása
A következő szkript létrehoz egy Windows-telepítőt:
<PropertyGroup>
<PythonCommands>$(PythonCommands);BdistWinInstCommand;</PythonCommands>
</PropertyGroup>
<Target Name="BdistWinInstCommand" Label="Generate Windows Installer" Returns="@(Commands)">
<CreatePythonCommandItem Target="$(ProjectDir)setup.py" TargetType="script"
Arguments="bdist_wininst --user-access-control=force --title "$(InstallerTitle)" --dist-dir="$(DistributionOutputDir)""
WorkingDirectory="$(WorkingDirectory)" RequiredPackages="setuptools"
ExecuteIn="Repl:Generate Windows Installer">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Az fxthomas/Example.pyproj.xml (GitHub), engedélyekkel használva.
Python-kerékcsomag létrehozása
A következő szkript létrehoz egy Python-kerékcsomagot :
<PropertyGroup>
<PythonCommands>$(PythonCommands);BdistWheelCommand;</PythonCommands>
</PropertyGroup>
<Target Name="BdistWheelCommand" Label="Generate Wheel Package" Returns="@(Commands)">
<CreatePythonCommandItem Target="$(ProjectDir)setup.py" TargetType="script"
Arguments="bdist_wheel --dist-dir="$(DistributionOutputDir)""
WorkingDirectory="$(WorkingDirectory)" RequiredPackages="wheel;setuptools"
ExecuteIn="Repl:Generate Wheel Package">
<Output TaskParameter="Command" ItemName="Commands" />
</CreatePythonCommandItem>
</Target>
Az fxthomas/Example.pyproj.xml (GitHub), engedélyekkel használva.
Egyéni parancsok hibaelhárítása
Tekintse át a következő szakaszokat az egyéni parancsok használatával kapcsolatos lehetséges problémákért.
A projektfájl nincs betöltve
Ez a hibaüzenet azt jelzi, hogy szintaxishibák vannak a projektfájlban. Az üzenet tartalmazza az adott hibát egy sorszámmal és karakterhelyzettel.
A konzolablak a parancsfuttatások után bezárul
Ha a konzolablak közvetlenül a parancs futtatása után bezárul, használja az attribútumdefiníciót ahelyettExecuteIn="consolepause", hogy .ExecuteIn="console"
A menüből hiányzó parancs
Ha nem látja az egyéni parancsot a Python helyi menüjében, ellenőrizze a következő elemeket:
- Ellenőrizze, hogy a parancs szerepel-e a
<PythonCommands>tulajdonságcsoportban. - Ellenőrizze, hogy a parancslista által definiált parancsnév megegyezik-e az
<Target>elemben megadott névvel.
Íme egy példa. A következő XML-kódrészletben a Example<PythonCommands> tulajdonságcsoport neve nem egyezik meg az ExampleCommand<Target> elemdefinícióban szereplő névvel. A Visual Studio nem talál egy elnevezett Exampleparancsot, ezért nem jelenik meg parancs. Használja ExampleCommand a parancslistában, vagy módosítsa a cél nevét úgy, hogy csak Exampleaz legyen.
<PropertyGroup>
<PythonCommands>$(PythonCommands);Example</PythonCommands>
</PropertyGroup>
<Target Name="ExampleCommand" Label="Example Command" Returns="@(Commands)">
<!-- ... -->
</Target>
Hiba a parancs futtatása közben, nem sikerült lekérni a parancscélt
Ez a hibaüzenet azt jelzi, hogy a <Target> vagy <CreatePythonCommandItem> elemek tartalma helytelen.
A hiba lehetséges okai az alábbiak:
- A szükséges
<Target>elemattribútum üres. - A szükséges
TargetTypeattribútum üres, vagy ismeretlen értéket tartalmaz. - A szükséges
ExecuteInattribútum üres, vagy ismeretlen értéket tartalmaz. - Az
ErrorRegexvagyWarningRegexaz attribútum azExecuteIn="output"attribútumdefiníció beállítása nélkül van megadva. - Ismeretlen attribútumok léteznek az elemben. Előfordulhat például, hogy az attribútumhivatkozás nem a következőképpen van elírva
ArgumnetsArguments.
Az attribútumértékek üresek lehetnek, ha nem definiált tulajdonságra hivatkozik. Ha a tokent $(StartupFile) használja, de nincs megadva indítási fájl a projektben, a token egy üres sztringre lesz feloldva. Ilyen esetekben érdemes lehet egy alapértelmezett értéket megadni. A Bottle, Flask és Django projektsablonokban definiált Futtató kiszolgáló és Hibakeresési kiszolgáló parancsok például alapértelmezés szerint a manage.py fájlt használják (ha a projekt tulajdonságai nem határozzák meg a kiszolgáló indítási fájlját).
A Visual Studio nem válaszol, összeomlik
Ha a Visual Studio nem válaszol és összeomlik az egyéni parancs futtatásakor, valószínűleg egy attribútumdefinícióval rendelkező ExecuteIn="output" konzolparancsot próbál futtatni. Ilyen esetekben előfordulhat, hogy a Visual Studio összeomlik, amikor megpróbálja elemezni a kimenetet. A feltétel elkerülése érdekében használja inkább az ExecuteIn="console" attribútumdefiníciót. További információ: 3681.
A parancs nem ismerhető fel operatív programként vagy kötegelt fájlként
Az attribútumdefiníció beállításakor TargetType="executable" az attribútum értéke Targetcsak a program neve lehet argumentumok nélkül, például python vagy python.exe csak. Ebben az esetben helyezze át az argumentumokat az Arguments attribútumba.