最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python腳本如何設(shè)置試用期

 更新時(shí)間:2022年07月19日 09:45:37   作者:somenzz  
程序員可能會(huì)私下給別人開發(fā)一些工具,但是通常要給別人試用一下,但是萬一別人試用后,把你拉黑,那就白忙活了。今天就分享如何在 Python 里設(shè)置有效期

程序員可能會(huì)私下給別人開發(fā)一些工具,但是通常要給別人試用一下,但是萬一別人試用后,把你拉黑,那就白忙活了。今天就分享如何在 Python 里設(shè)置有效期。

為了設(shè)置有效期,首先要獲取當(dāng)前時(shí)間,如果獲取本地時(shí)間,那么別人可以通過修改操作系統(tǒng)的時(shí)間來一直保持有效。最好的辦法就是獲取網(wǎng)絡(luò)時(shí)間。你說他斷網(wǎng)怎么辦?

如果斷網(wǎng),有兩種方法,要么不給用,要么再取本地時(shí)間。

1、獲取網(wǎng)絡(luò)時(shí)間

如何獲取網(wǎng)絡(luò)時(shí)間呢,可以從 HTTP 返回的 Header 里獲取時(shí)間,由于這個(gè)時(shí)間是 GMT 格式的 UTC 時(shí)間,我們還需要轉(zhuǎn)為本地時(shí)間,下面的腳本都考慮到了,均采用標(biāo)準(zhǔn)庫。

from?datetime?import?datetime
from?urllib.request?import?urlopen
import?time
import?ssl
import?sys

ssl._create_default_https_context?=?ssl._create_unverified_context


def?get_network_time():
????url?=?"https://www.baidu.com"
????try:
????????with?urlopen(url)?as?res:
????????????utctime?=?gmtstr_to_localtime(res.getheader("Date"))
????????????return?datetime_from_utc_to_local(utctime)
????except?Exception?as?e:
????????print("請(qǐng)檢查網(wǎng)絡(luò)設(shè)置")
????????sys.exit()


def?gmtstr_to_localtime(gmtstr)?->?datetime:
????return?datetime.strptime(gmtstr,?"%a,?%d?%b?%Y?%H:%M:%S?GMT")


def?datetime_from_utc_to_local(utc_datetime):
????now_timestamp?=?time.time()
????offset?=?datetime.fromtimestamp(now_timestamp)?-?datetime.utcfromtimestamp(
????????now_timestamp
????)
????return?utc_datetime?+?offset


if?__name__?==?"__main__":
????print(get_network_time())
????#?Output:
????#?2022-07-19?06:39:12

2、上鎖

這一步很簡(jiǎn)單,一個(gè)日期判斷就搞定了:

def?lock():
????now?=?get_network_time()
????end_date?=?datetime(2022,?8,?26)
????if?now?>?end_date:
????????print("試用已到期")
????????sys.exit()

然后把上面獲取網(wǎng)絡(luò)時(shí)間的代碼及 lock 函數(shù)均放在 lock.py 文件里,在我們的核心模塊 core_work.py 中導(dǎo)入:

from?lock?import?lock

def?somefunc():
????lock()
????#?do?your?work

在需要 lock() 的地方調(diào)用下 lock 函數(shù)就可以了。

你可能還需要一個(gè) startup.py 腳本來啟動(dòng)整個(gè)程序:

from?core_work?import?main
main()

3、編譯 pyd

不編譯的話,或者編譯為 pyc 的話,上面的工作等于沒做,pyc 可以直接反編譯成 py 文件,連命名符號(hào)都不變。

編譯的話,只需要需要把獲取網(wǎng)絡(luò)時(shí)間的代碼,lock 函數(shù)的定義及調(diào)用 lock 的代碼都編譯成 pyd,本例子中就是 lock.py 和 core_work.py 編譯成 lock.pyd 和 core_work.pyd,然后把源代碼 lock.py 和 core_work.py 刪除,其實(shí)就可以發(fā)布了,想破解只能反編譯 pyd 文件,得到的是匯編代碼,這個(gè)門檻已經(jīng)拒絕了大多數(shù)的人。

pyd 的編譯流程是 .py -> .c -> pyd,也就是說 pyd 是從 c 語言編譯的,除了隱藏源代碼之外,速度也會(huì)變快一些。

如果不放心的話,那就 pyinstall -k key startup.py 再加密打包一下,key 就是加密的密碼,如果在 pyd 文件 import 了第三方庫,那么要在 spec 文件中填寫 hiddenimports。

如何編譯 pyd 呢?代碼如下:

from?distutils.core?import?setup
from?Cython.Build?import?cythonize
files?=?["lock.py",?"core_work.py"]

setup(
????name="yourapp",
????ext_modules=cythonize(files),
????script_args=["build_ext",?"-b",?"./build",?"-t",?"./build/temp"],
)

運(yùn)行之前你要 pip install cython。

然后在 build 文件夾就可以看到編譯好的 pyd 文件,然后把他們移動(dòng)到源代碼的位置,重命名為 xxx.pyd 就可以了。

到此這篇關(guān)于詳解Python腳本如何設(shè)置試用期的文章就介紹到這了,更多相關(guān)Python腳本試用期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中l(wèi)ist.sort()方法的具體使用

    python中l(wèi)ist.sort()方法的具體使用

    本文詳細(xì)介紹了Python中l(wèi)ist的sort方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Pandas之使用drop_duplicates:去除重復(fù)項(xiàng)

    Pandas之使用drop_duplicates:去除重復(fù)項(xiàng)

    這篇文章主要介紹了Pandas之使用drop_duplicates:去除重復(fù)項(xiàng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • tensorflow實(shí)現(xiàn)在函數(shù)中用tf.Print輸出中間值

    tensorflow實(shí)現(xiàn)在函數(shù)中用tf.Print輸出中間值

    今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)在函數(shù)中用tf.Print輸出中間值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python填充彩色圖形的實(shí)現(xiàn)示例

    python填充彩色圖形的實(shí)現(xiàn)示例

    本文主要介紹了python填充彩色圖形的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python時(shí)間模塊datetime、time、calendar的使用方法

    Python時(shí)間模塊datetime、time、calendar的使用方法

    這篇文章主要介紹了Python時(shí)間模塊的使用方法,主要包括三大模塊datetime、time、calendar,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Django掃碼抽獎(jiǎng)平臺(tái)的配置過程詳解

    Django掃碼抽獎(jiǎng)平臺(tái)的配置過程詳解

    這篇文章主要介紹了Django掃碼抽獎(jiǎng)平臺(tái),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 九個(gè)Python列表生成式高頻面試題匯總

    九個(gè)Python列表生成式高頻面試題匯總

    本文為大家整理了九個(gè)Python列表生成式的面試題(從簡(jiǎn)單到困難排序),可以幫助大家提高列表生成式的理解水平,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-05-05
  • 用Python代碼來繪制彭羅斯點(diǎn)陣的教程

    用Python代碼來繪制彭羅斯點(diǎn)陣的教程

    這篇文章主要介紹了用Python代碼來繪制彭羅斯點(diǎn)陣的教程,核心代碼主要就是一行簡(jiǎn)單的lambda匿名函數(shù),需要的朋友可以參考下
    2015-04-04
  • Django中模型Model添加JSON類型字段的方法

    Django中模型Model添加JSON類型字段的方法

    這篇文章主要介紹了Django中模型Model添加JSON類型字段的方法,實(shí)例分析了Python的Django框架模型使用技巧,需要的朋友可以參考下
    2015-06-06
  • matplotlib對(duì)象拾取事件處理的實(shí)現(xiàn)

    matplotlib對(duì)象拾取事件處理的實(shí)現(xiàn)

    這篇文章主要介紹了matplotlib對(duì)象拾取事件處理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

青阳县| 恩施市| 乌兰县| 临西县| 扎兰屯市| 日喀则市| 石嘴山市| 宁都县| 南丰县| 宜宾县| 延安市| 青岛市| 嘉荫县| 新巴尔虎右旗| 吉木萨尔县| 科尔| 越西县| 内丘县| 漳州市| 轮台县| 汝阳县| 沭阳县| 怀安县| 牙克石市| 高碑店市| 米林县| 开远市| 太谷县| 米易县| 马鞍山市| 健康| 涿鹿县| 洞口县| 西峡县| 吴江市| 牟定县| 安溪县| 平阳县| 蛟河市| 高要市| 礼泉县|