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 projektmenüjéhez a Visual Studióban. Az egyéni Python-parancsok egy konzolablakban vagy a Visual Studio Kimeneti ablakban 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 Studio.
A Visual Studio for Mac nem támogatott. További információért lásd: Mi történik a Visual Studio Mac esetében? A Visual Studio Code Windows, Mac és Linux rendszeren jól működik a Pythonnal az elérhető bővítmények segítségével.
Egyéni parancsok felfedezése
Alapértelmezés szerint a Python projektmenü két parancsot tartalmaz, a PyLint- futtatása és a Mypy futtatása:
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 kiszolgáló indítása és a hibakeresési kiszolgáló indítása. 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őterületen kattintson a jobb gombbal a Python-projektre, és válassza a Projekt eltávolításalehető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 Projektfájl szerkesztése:
Módosítsa a projektfájlt a Visual Studio szerkesztőjében, és mentse a munkáját.
A Megoldáskezelőbenkattintson a jobb gombbal a kiürített projektre, és válassza Projectújratö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 a Újratöltés vagy a Mindent újratölt 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 parancsot ú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 a python.exe
paranccsal futtatja egy projekt indítási fájlját, amely lényegében ugyanaz, mint a Hibakeresési>Indítás hibakeresés nélkül lehetőség használata a Visual Studio fő eszköztárán.
A Visual Studióban hozzon létre egy új Python-projektet Python-CustomCommands néven a Python-alkalmazás sablon használatával. Útmutatásért lásd 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 Studio-ban, ha a projekt meg van nyitva, de nincs betöltve. 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őkattintson a jobb gombbal a Python-projektre, válassza Python-lehetőséget, és figyelje meg a helyi menü parancsát. Jelenleg a helyi menüben csak a PyLint futtatása és a Mypy futtatása parancsok érhetők el. 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őtt:<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 a Újratöltés lehetőséget, hogy frissítse a megnyitott projektet a projektfájl módosításaival.
A Megoldáskezelőbenkattintson a jobb gombbal a Python-projektre, válassza Python-lehetőséget, és ellenőrizze a helyi menü parancsát.
A helyi menüben továbbra is csak a PyLint futtatása és a Mypy futtatása parancsok láthatóak. A projektfájlhoz most hozzáadott kód egyszerűen replikálja a PyLint parancsot tartalmazó alapértelmezett
<PythonCommands>
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á az alábbi
<Target>
elemdefiníciót a<Project>
elemhez. A<Target>
definíciót a korábban ismertetett<PropertyGroup>
definíció előtt vagy után helyezheti el.Ez a
<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) a konzolablakban találhatópython.exe
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 (hozzáadva a 5. lépés-ban) a következő XML-re. Ez a szintaxis határozza meg a<Target>
elemName
attribútumát, amely hozzáadja az egyéni parancsot a Python helyi menüjéhez. A parancs menücímkéje Indítási fájl futtatása.<PythonCommands> $(PythonCommands); Example_RunStartupFile </PythonCommands>
Borravaló
Ha azt szeretné, hogy az egyéni parancs megjelenjen a helyi menüben a
$(PythonCommands)
jogkivonatban definiált alapértelmezett parancsok előtt, helyezze a parancs<Target>
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őkattintson a jobb gombbal a Python-projektre, válassza Python-lehetőséget, és ellenőrizze újra a helyi menü parancsát.
Most az egyéni Indítási fájl futtatása parancs elérhető a menüben. Ha nem látja az egyéni parancsot, ellenőrizze, hogy hozzáadta-e a
<Target>
elemName
attribútumértékét a<PythonCommands>
elemhez a 9. . lépésben leírtak szerint. Tekintse át a cikk későbbi, hibaelhárítási szakaszában felsorolt szempontokat is.Válassza az Indítási fájl futtatása parancsot. Egy konzolablak megnyílik, és megjeleníti a szöveget: Hello egyéni parancsok, majd következik: Nyomjon le egy billentyűt a folytatáshoz. Erősítse meg a kimenetet, és zárja be a konzolablakot.
Jegyzet
Az egyéni parancsszkript a Python-projekt aktivált környezetében fut.
Váltson arra a szerkesztőre, amelyik tartalmazza a projektfájlt. A
<Target>
elemdefinícióban (8. lépésben) módosítsa aExecuteIn
attribútum értékétoutput
értékre.<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 ki újra az Indítási fájl futtatása parancsot az Python helyi menü egyéni parancsai közül. Most a program kimenete a Visual Studio Kimeneti ablakban jelenik meg konzolablak helyett:
További egyéni parancsok hozzáadásához kövesse ugyanezt a folyamatot:
Adjon meg egy megfelelő
<Target>
elemet a projektfájlban lévő egyéni parancshoz.Adja hozzá a
<Target>
elemName
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 <Target>
elemattribútum értékeiben lévő projekttulajdonságokra vagy környezeti változókra szeretne hivatkozni, használja a tulajdonságnevet 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, mint a ($StartupFile)
, amely 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 továbbra is újra kell betöltenie a projektet.
<Cél> elemstruktúra ismertetése
Az egyéni parancsok részleteit a <Target>
elem használatával határozhatja meg. A <Target>
elem általános formája a 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.
Attribútum | Szükséges | Leírás |
---|---|---|
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) jogkivonatot, amely a célt parancsként azonosítja. |
CreatePythonCommandItem attribútumok
A <Target>
elem <CreatePythonCommandItem>
és <Output>
elemeket tartalmaz, 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. Minden attribútumérték kis- és nagybetűkre érzéketlen.
Attribute |
Szükséges | Leírás |
---|---|---|
TargetType |
Igen | Meghatározza a Target attribútumot, valamint az érték használatát a Arguments attribútummal együtt: - executable : Futtassa a Target attribútumban elnevezett végrehajtható fájlt, hozzáfűzve az értéket a Arguments attribútumban, mintha közvetlenül a parancssorba volna beírva. Az érték csak argumentumok nélküli programnevet tartalmazhat. - script : Futtassa a python.exe parancsot a fájlnévvel a Target attribútumban, majd az értékkel a Arguments attribútumban. - module : Futtassa a python -m parancsot, majd a modul nevét a Target attribútumban, majd a Arguments attribútum értékét. - code : Futtassa a Target attribútumban található beágyazott kódot. Hagyja figyelmen kívül a Arguments attribútum értékét. - pip : Futtassa a pipet a Target attribútumban lévő paranccsal, majd a Arguments attribútumban lévő értékkel. Ha a ExecuteIn attribútum output van beállítva, a pip feltételezi, hogy a kérés az install parancs futtatása, és a 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 a TargetType attribútum értékétől függően. |
Arguments |
Szabadon választható | A Target attribútummal használandó argumentumok sorozata (ha van ilyen). - Ha a TargetType attribútum értéke script , a Arguments érték a Python-programnak lesz megadva a python.exe parancs helyett. - Ha a TargetType attribútum értéke code , a Arguments érték figyelmen kívül lesz hagyva. |
ExecuteIn |
Igen | Azt a környezetet adja meg, amelyben futtatni szeretné a parancsot: - console : (Alapértelmezett) A Target attribútumot a Arguments értékkel úgy futtatja, mintha közvetlenül a parancssorba lennének beírva. Amíg a 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 egy billentyű lenyomása után várakozik. - output : Futtatja a Target attribútumot, és megjeleníti az eredményeket a Visual Studio Kimeneti ablakban. Ha a TargetType attribútum pip , a Visual Studio a Target attribútumot használja csomagnévként, és hozzáfűzi a Arguments attribútum értékét. - repl : A Target attribútum futtatása a Python Interaktív Ablak-ban. Az ablak címéhez az opcionális megjelenítendő név használatos. - none : Ugyanaz a viselkedés, mint console . |
WorkingDirectory |
Szabadon választható | A parancs futtatásához használt mappát azonosítja. |
ErrorRegex WarningRegEx |
Szabadon választható | Csak akkor használatos, ha a ExecuteIn attribútum output értékre van állítva. Mindkét attribútumérték egy reguláris kifejezést ad meg, amelyet a Visual Studio használ a parancskimenet elemzéséhez, valamint a hibalista ablakban megjelenő hibák és figyelmeztetések megjelenítéséhez. Ha ezek az attribútumok nincsenek megadva, a parancs nem befolyásolja a hibalista ablakát. További információ a Visual Studio elvárásairól: Elnevezett rögzítési csoportok. |
RequiredPackages |
Szabadon választható | A parancs csomagkövetelményeinek listáját a requirements.txt fájllal (pip.readthedocs.io) megegyező formátumban adja meg. Például a PyLint futtatása parancs adja meg a formátumot pylint>=1.0.0 . 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 |
Szabadon választható | A parancs futtatása előtt definiálandó környezeti változók egy listája. Minden változó a \<NAME>=\<VALUE> formátumot használja, és a több változót pontosvessző választja el. A több értékkel rendelkező változókat egy vagy két idézőjelben kell tárolni, ahogyan az '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, a ErrorRegex
és WarningRegex
attribútumértékek normál kifejezéseit várja el a következő elnevezett csoportok használatához:
-
(?<message>...)
: A hiba szövege. -
(?<code>...)
: Hibakódérték. -
(?<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, amelynél a hiba jelentve van.
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)
Ha lehetővé szeretné tenni, hogy a Visual Studio kinyerje a megfelelő információkat ezekből a figyelmeztetésekből, és megjelenítse őket a Hibalista ablakban, a Run Pylint parancs WarningRegex
attribútumértéke a következő:
^(?<filename>.+?)\((?<line>\d+),(?<column>\d+)\): warning (?<msg_id>.+?): (?<message>.+?)$]]
Jegyzet
Valójában a WarningRegex
attribútumérték msg_id
szintaxisa code
kell legyen, ahogyan azt a 3680-as számú problémában leírták.
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 a célfájl összes <Target>
elemével (.targets), majd importálhatja a fájlt a Python-projektekbe.
A célfájl ugyanazt a formátumot és szintaxist használja a Python-projektfájlhoz (.pyproj) leírt egyéni parancsok definiálásához. A konfigurálandó gyakori elemek közé tartozik a
<PythonCommands>
,<Target>
,<CreatePythonCommandItem>
és<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 egy célfájlt szeretne importálni a projektbe, vegyen fel egy
<Import Project="(path)">
elemet a projektfájl<Project>
elemébe.Ha például CustomCommands.targets nevű projektfájllal rendelkezik egy - Python-projektbeli mappá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ás, é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 (modul célpont)
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>
A `pip install` parancs futtatása adott csomaggal (pip cél)
Az alábbi parancs futtatja a pip install my-package
parancsot a Visual Studio Kimeneti ablakban. A csomag fejlesztésekor és a telepítés tesztelésekor használhat ilyen parancsokat. A <Target>
elem a csomag nevét tartalmazza a install
parancs helyett, amelyet a ExecuteIn="output"
attribútumdefiníció használatakor feltételezünk.
<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 pip csomagok megjelenítése (pip célpont)
Az alábbi parancs futtatja a pip parancsot az list
függvénnyel az elavult pip csomagok azonosítására.
<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>
Hajts végre futtathatót a consolepause használatával
A következő parancs a where
függvényt futtatja 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 webprojektekhez tartozó Start kiszolgáló és Start hibakeresési kiszolgáló parancsok meghatározásának megismeréséhez vizsgálja meg a GitHubon található Microsoft.PythonTools.Web.targets adattárat.
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>
Engedélyekkel használt fxthomas/Example.pyproj.xml (GitHub).
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>
Engedélyekkel használt fxthomas/Example.pyproj.xml (GitHub).
Python-kerékcsomag létrehozása
A következő szkript létrehoz egy Python-kerekes csomagot:
<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>
Engedélyekkel használt fxthomas/Example.pyproj.xml (GitHub).
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 a ExecuteIn="consolepause"
attribútumdefiníciót a ExecuteIn="console"
helyett.
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 a
<Target>
elemben megadott névvel.
Íme egy példa. A következő XML-kódrészletben a <PythonCommands>
tulajdonságcsoport Example
neve nem egyezik meg az <Target>
elemdefiníció ExampleCommand
nevével. A Visual Studio nem talál Example
nevű parancsot, ezért nem jelenik meg parancs. Használjon ExampleCommand
a parancslistában, vagy módosítsa a cél nevét úgy, hogy csak Example
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
TargetType
attribútum üres, vagy ismeretlen értéket tartalmaz. - A szükséges
ExecuteIn
attribútum üres, vagy ismeretlen értéket tartalmaz. - A
ErrorRegex
vagyWarningRegex
attribútum aExecuteIn="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
Arguments
-ként, hanemArgumnets
-ként íródik.
Az attribútumértékek üresek lehetnek, ha nem definiált tulajdonságra hivatkozik. Ha a $(StartupFile)
tokent használja, de nincs megadva indítási fájl a projektben, a token üres karakterláncra oldódik fel. Ilyen esetekben érdemes lehet egy alapértelmezett értéket megadni. Például a Szerver futtatása és a Hibakeresési szerver futtatása parancsokat a Bottle, Flask és Django projektsablonok definiálják, amelyek alapértelmezés szerint a manage.py fájlt használják (ha a projekttulajdonságokban nincs megadva kiszolgálóindító fájl).
A Visual Studio nem válaszol, összeomlik
Ha a Visual Studio nem válaszol, és az egyéni parancs futtatásakor összeomlik, valószínűleg egy konzolparancsot próbál futtatni ExecuteIn="output"
attribútumdefinícióval. 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 a ExecuteIn="console"
attribútumdefiníciót. További információért lásd a 3681-es számú ügyet.
A parancs nem ismerhető fel operatív programként vagy kötegelt fájlként
A TargetType="executable"
attribútumdefiníció beállításakor a Target
attribútum értékének csak a programnév kell lennie, argumentumok nélkül, például python
vagy csak python.exe
. Ebben az esetben helyezze át az argumentumokat a Arguments
attribútumba.