當前位置:首頁 » 編程語言 » sconsnopython

sconsnopython

發布時間: 2022-11-07 22:42:33

❶ Pycharm,顯示no,python at…怎麼辦

出現這個問題的原因目前知道的有兩個:

1、本地環境中沒有安裝Python,或者遠程設置也沒有;

2、安裝的pycharm的版本和你當前Python的版本不匹配也會出現這個問題;

❷ 請教Scons python 編譯問題

一、概述

scons是一個Python寫的自動化構建工具,和GNU make相比優點明顯:
1、移植性:python能運行的地方,就能運行scons
2、擴展性:理論上scons只是提供了python的類,scons使用者可以在這個類的基礎上做所有python能做的事情。比如想把一個已經使用了Makefile大型工程切換到scons,就可以保留原來的Makefile,並用python解析Makefile中的編譯選項、源/目標文件等,作為參數傳遞給scons,完成編譯。
3、智能:Scons繼承了autoconf/automake的功能,自動解析系統的include路徑、typedef等;「以全局的觀點來看所有的依賴關系」

二、scons文件

scons中可能出現的文件:
SConstruct,Sconstruct,sconstruct,SConscript

scons將在當前目錄以下次序 SConstruct,Sconstruct,sconstruct 來搜索配置文件,從讀取的第一個文件中讀取相關配置。
在配置文件SConstruct中可以使用函數SConscript()函數來定附屬的配置文件。按慣例,這些附屬配置文件被命名為」SConscript」,當然也可以使用任意其它名字。

三、scons的命令行參數
scons: 執行SConstruct中腳本
scons -c clean
scons -Q 只顯示編譯信息,去除多餘的列印信息
scons -Q --implicit-cache hello 保存依賴關系
--implicit-deps-changed 強制更新依賴關系
--implicit-deps-unchanged 強制使用原先的依賴關系,即使已經改變

四、SConstruct提供的方法

1、Program:生成可執行文件

Program('hello.c') 編譯hello.c可執行文件,根據系統自動生成(hello.exe on Windows; hello on POSIX)
Program('hello','hello.c') 指定Output文件名(hello.exe on Windows; hello on POSIX)
Program(['hello.c', 'file1.c', 'file2.c']) 編譯多個文件,Output文件名以第一個文件命名
Program(source = "hello.c",target = "hello")
Program(target = "hello" , source = "hello.c")
Program('hello', Split('hello.c file1.c file2.c')) 編譯多個文件

Program(Glob("*.c"))
src = ["hello.c","foo.c"];Program(src)

2、Object:生成目標文件

Object('hello.c') 編譯hello.c目標文件,根據系統自動生成(hello.obj on Windows; hello.o on POSIX)

3、Library:生成靜態/動態庫文件

Library('foo', ['f1.c', 'f2.c', 'f3.c']) 編譯library
SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c']) 編譯 shared library
StaticLibrary('bar', ['f4.c', 'f5.c', 'f6.c']) 編譯 static library

庫的使用:

Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.') 連接庫,不需加後綴或是前綴

4、SourceSignatures:判斷源文件是否修改
SourceSignatures('MD5') 根據內容是否改變,默認方式
SourceSignatures('timestamp') 根據修改時間

5、TargetSignatures:判斷目標文件是否改變
TargetSignatures('build') 根據編譯結果
TargetSignatures('content') 根據文件內容,如果只是加了句注釋,將不會被重新編譯

6、Ignore:忽略依賴關系

Ignore(hello, 'hello.h') 忽略某個依賴關系

7、Depends:明確依賴關系

Depends(hello, 'other_file') 明確依賴關系

8、SConscript:scons的配置文件。

源文件的目錄結構如下:
src:
| SConstruct
|test.cpp
| mA(目錄):
| SConscript
| func.cpp
其中test.cpp為主文件,中調用func.cpp中定義的函數

SConstruct內容如下:

[cpp]view plain

  • subobj=SConscript(['mA/SConscript'])

  • obj=subobj+Object(Glob("*.cpp"))

  • Program("test",list(obj))


  • SConscript內容 :

  • [cpp]view plain

  • obj=Object(Glob("*.cpp"))

  • Return("obj")


  • 上例中,在主目錄中執行 scons就可以編譯整個"工程"。SConstruct編譯主目錄中的test.cpp,並通過SConscript編譯mA目錄下的源文件,並最終生成可執行文件;SConscript用於編譯mA中的func.cpp並把生成的func.o傳遞給主目錄的SConstruct。

  • 10.env:環境變數
    環境變數用於設置在編譯過程中的各種參數,可以用下面的SConstruct列印環境變數的所有信息(實際上env就是一個python字典)
    可以使用如下的SConstruct查看環境變數的內容:

    [cpp]view plain

  • env=Environment()

  • dict=env.Dictionary()

  • keys=dict.keys()

  • keys.sort()

  • forkeyinkeys:

  • print"constructionvariable='%s',value='%s'"%(key,dict[key])


  • 環境變數的使用:

  • env = Environment() #創建默認的環境變數,默認scons會按編譯器的默認選項來進行編譯

  • import os

  • env = Environment(CC = 'gcc',CCFLAGS = '-O2') #創建並設置環境 變數

  • env.Program('foo.c')
  • 環境變數的復制:
    env = Environment(CC = 'gcc')
    opt = env.Clone(CCFLAGS = '-O2')
    dbg = env.Clone(CCFLAGS = '-g')

    環境變數的替換:
    env = Environment(CCFLAGS = '-DDEFINE1')
    env.Replace(CCFLAGS = '-DDEFINE2')
    env.Program('foo.c')
    環境變數的輸入輸出:用於統一多目錄源文件的編譯選項,如:
    src:
    | SConstruct
    | libstlport.a
    | test.cpp
    | include(目錄):
    | foo.h
    | mA(目錄):
    | SConscript
    |func.cpp

    test.cpp和mA/func.cpp都引用了include/foo.h,test.cpp調用了mA/func.cpp的功能函數,其中include/foo.h中定義了一個包含string類型的類。

    SConstruct如下:

    [cpp]view plain

  • env=Environment()

  • flags=env.ParseFlags(['-pthread-I/usr/include/stlport','-L.'])

  • env.MergeFlags(class_flags)

  • subobj=SConscript(['mA/SConscript'])

  • obj=subobj+env.Object(Glob("*.cpp"))

  • env.Program("test",list(obj),LIBS=['libstlport.a'])

  • mA/SConscrip如下:

    [cpp]view plain

  • obj=Object(Glob("*.cpp"))

  • Return("obj")


  • 不出意外的話上邊的工程編譯可以通過,但是運行的時候會Aborted。因為test.cpp,mA/func.cpp都使用了包含string類型的那個類,但是由於編譯環境的不同,test.cpp認為string變數的大小是24位元組, mA/func.cpp認為string變數的大小是4個位元組(libstlport.a搗的鬼)。

    解決問題的辦法就是環境變數輸出,修改SConstruct和mA/SConscript如下:
    SConstruct:

    [cpp]view plain

  • env=Environment()

  • flags=env.ParseFlags(['-pthread-I/usr/include/stlport','-L.'])

  • env.MergeFlags(class_flags)

  • Export('env')

  • subobj=SConscript(['mA/SConscript'],exports='env')

  • obj=subobj+env.Object(Glob("*.cpp"))

  • env.Program("test",list(obj),LIBS=['libstlport.a'])


  • mA/SConscript:

❸ 如何確定ubuntu是否安裝scons

scons是一個Python寫的自動化構建工具,需要安裝python和scons後才能運行,能夠跨平台。其集成功能類似於autoconf/automake ,是一個簡潔可靠的工具。現在很多系統都自帶python 所以直接安裝scons即可。

❹ 如何在Windows上安裝python

第一步:下載Python安裝包

在Python的官網 www.python.org 中找到最新版本的Python安裝包,點擊進行下載,請注意,當你的電腦是32位的機器,請選擇32位的安裝包,如果是64位的,請選擇64位的安裝包;

第二步:安裝

A.雙擊下載好的安裝包,彈出如下界面:

找到系統變數中「Path」一項,選中後點擊「編輯」;將之前安裝的phtyon的完整路徑加到最後面,注意要在完整的路徑前加一個「;」,然後點擊「確定」,保存所做的修改,這樣,環境變數就設置好了;

設置完成後,可以按照上面的方法進行測試,以確保環境變數設置正確;

小結:

上面是python的安裝方法,適合初學者的學習,安裝完成後,通常我們還要安裝pycharm,PyCharm是一種Python IDE,我們在編寫python程序時,通常用該工具進行開發,調試和管理工程等,我們會持續介紹,由淺入深,請添加到收藏,謝謝您的關注


❺ 如何將scons工具集成到python中

在Windows或者Linux下,SConstruct文件相當於MakeFile,使用SCONS編譯,需輸入scons.bat(scons),後面帶上編譯選項options(如SConstruct所在的路徑)。觀察scons.bat這個腳本,可以在其他Python代碼中,將SCONS工具當作一個函數來調用。這個函數就是Scons.Script.main(),這個main函數將解析命令行中的編譯選項,通過sys.argv[1:]來傳入。所以只需修改這個函數,就可以以函數的方式調用,不需要通過如Popen等方式在代碼中啟動scons。
先找到SCONS安裝的目錄,如C:\\Python27\Scons-2.3.1包,將Scons\Script\Main.py中main()函數聲明中,添加一個傳入參數,變為:
def main(args_):
同時將_exec_main(Parser,Values)聲明,也變為:
__exec_main(args_,Parser,Values)
然後main(args_)通過調用__exec_main(args_,Parser,Values),將參數傳給__exec_main,在__exec_main中再將sys.argv[1:]替換為args.split().
修改完Main.py之後,執行如下,實現替換二進制源文件(Main.pyc):
>>import py_compile
>>py_compile(r『C:\\Python27\\Scons-2.3.1\\Scons\\Script\\Main.py『)

使用如下代碼測試:
>>import os
>>import sys
>>sys.path=[os.path.join(sys.prefix,『Scons-2.3.1『)]+sys.path
>>import Scons.Script
>>Scons.Script.main(『.『)
Scons工具正常使用。

❻ .scons結尾的文件是什麼

scons是一個Python寫的自動化構建工具文件,需要安裝python和scons後才能運行

❼ 請教Scons python 編譯問題

哈哈,解決問題的方法不可思議,我看了半天main.py後,就把那2個代碼SConstruct 和SConscript拷到python的根目錄下,居然編譯一大半,不過還有問題,請幫助我;提示如下
E:\svn_rt-thread\rt-thread\bsp\mini2440>scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build\bsp
armcc -o build\bsp\application.o -c --device DARMSS9 --apcs=interwork --diag_sup
press=870 -I"C:\Keil\ARM\BIN30/ARM/RV31/INC" -g -O0 -IE:\svn_rt-thread\rt-thread
\include -IE:\svn_rt-thread\rt-thread\libcpu\arm\s3c24x0 -IE:\svn_rt-thread\rt-t
hread\libcpu\arm\common -I. -IE:\svn_rt-thread\rt-thread -IE:\svn_rt-thread\rt-t
hread\components\finsh -IE:\svn_rt-thread\rt-thread\components\dfs -IE:\svn_rt-t
hread\rt-thread\components\dfs\include -IE:\svn_rt-thread\rt-thread\components\r
tgui\include -IE:\svn_rt-thread\rt-thread\components\rgtui\common -IE:\svn_rt-th
read\rt-thread\components\rtgui\server -IE:\svn_rt-thread\rt-thread\components\r
tgui\widgets application.c
'armcc' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
scons: *** [build\bsp\application.o] Error 1
scons: building terminated because of errors.

E:\svn_rt-thread\rt-thread\bsp\mini2440>
以下圖片

❽ no Python console is currently selected to run 該怎麼辦

在python的設置Project Interpreter選項中選擇對應版本的解釋器,具體操作如下:

1、打開程序後,錯誤提示右邊有一個藍色的字體,點擊字體開始配置。

❾ 最近剛入手Pycharm,可是一運行下面就顯示No Python at'XXXXX'那位大神能幫忙解決下

路徑問題,請將python安裝路徑換為不包含中文的,然後重新運行試一下。
如果不是中文路徑問題,請檢查目標路徑是否有python。

熱點內容
劍俠情緣緩存怎麼清理 發布:2025-01-11 22:33:56 瀏覽:315
win7旗艦版怎麼設置密碼 發布:2025-01-11 22:21:09 瀏覽:143
被害人訪問 發布:2025-01-11 22:06:24 瀏覽:366
朋友圈上傳長視頻方法 發布:2025-01-11 22:01:41 瀏覽:357
我的世界ice伺服器被炸罰款 發布:2025-01-11 21:54:36 瀏覽:725
linuxphpini配置 發布:2025-01-11 21:54:35 瀏覽:481
tp圖片壓縮 發布:2025-01-11 21:53:52 瀏覽:632
手柄怎麼調節安卓模式 發布:2025-01-11 21:44:36 瀏覽:950
國產伺服器搭建ftp 發布:2025-01-11 21:27:33 瀏覽:919
電腦系統哪個好用配置 發布:2025-01-11 21:26:04 瀏覽:141