» »

Python compiler directive

Python compiler directive

twom ::

Executable naredim s pyinstaller --onefile ime_skripte.py

V sami skripti napišem
version="2023.02.22 13:10"
print(version)
Na kakšen način bi to spremenljivko lahko "hardkodiral" ob buildanju, ne da jo rabim vpisovat pred buildom?

kljuka13 ::

Če prav razumem, želiš pridobiti trenutni datum in čas.

from datetime import datetime
version = datetime.now().strftime("%Y.%m.%d %H:%M")
print(version)

secops ::

Najprej pripravi kodo tako, da umakneš podatek o verziji v svojo datoteko.

version.txt
0000.00.00 00:00


V kodi pa potem samo prebereš to datoteko, recimo ob zagonu
main.py
f = open('version.txt')
version = f.read().strip()
f.close()


Ko imaš enkrat narejeno takole, lahko v CI sistemu (Jenkins, Gitlab CI) avtomatično zgeneriraš version.txt in jo zapakiraš. Ter potem narediš z njo kar pač hočeš.
stages:
  - build

build:
  stage: build
  script:
    - echo $(date +'%Y.%m.%d %H:%M') > version.txt
    - pyinstaller --onefile main.py

twom ::

kljuka13 je izjavil:

Če prav razumem, želiš pridobiti trenutni datum in čas.


from datetime import datetime
version = datetime.now().strftime("%Y.%m.%d %H:%M")
print(version)
To se spreminja in je on the fly. Jaz rabim zapečeno vrednost, kot je v času buildanja.

secops je izjavil:

Najprej pripravi kodo tako, da umakneš podatek o verziji v svojo datoteko.

version.txt

0000.00.00 00:00
V kodi pa potem samo prebereš to datoteko, recimo ob zagonu
main.py

f = open('version.txt')
version = f.read().strip()
f.close()
Ko imaš enkrat narejeno takole, lahko v CI sistemu (Jenkins, Gitlab CI) avtomatično zgeneriraš version.txt in jo zapakiraš. Ter potem narediš z njo kar pač hočeš.

stages:
- build

build:
stage: build
script:
- echo $(date +'%Y.%m.%d %H:%M') > version.txt
- pyinstaller --onefile main.py

Hm, a brez dodatne datoteke pa ne gre?
Ker potem moram pred tem še to popravit.
Jaz bi želel da date_time pyinstaller dobi v času buildanja in jo določi kot konstanto.

Zgodovina sprememb…

  • spremenil: twom ()

secops ::

Lahko seveda narediš tudi tako, da je to že notri v kodi in potem z nekim regexom matchaš in zamenjaš z dejansko vrednostjo. Praksa je sicer, da je to ločeno.

Te datoteke ne popravljaš ročno, ampak ti jo CI sistem ob buildu, oziroma običajno ob releasu.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[python] project euler problem

Oddelek: Programiranje
151306 (858) Spura
»

Bash skripta

Oddelek: Programiranje
243288 (2600) poweroff
»

Beleženje udeležbe v prometu (strani: 1 2 )

Oddelek: Loža
5811024 (8155) SeMiNeSanja
»

Win Vista HP in Daemon Tools - konflikt

Oddelek: Pomoč in nasveti
141972 (1646) El Nino
»

[bat datoteke] Trenutni datum in ura

Oddelek: Programiranje
112521 (2278) darkolord

Več podobnih tem