導航:首頁 > 編程語言 > ubuntu如何編寫python

ubuntu如何編寫python

發布時間:2022-11-13 01:31:23

『壹』 在ubuntu上怎麼開發python

自帶python 了,自己配個ide就行了
安裝環境
IntelCore7250(雙核),操作系統Ubuntu10.04.1
1.安裝OpenJDK6
sudoapt-getinstallopenjdk-6-jdk
選用OpenJDK的原因是他已經通過測試,完美兼容JDK,並在linux更新源中已經取代了sun-java6-jdk了。(注1)
2.安裝Eclipse
sudoapt-getinstalleclipse
Ubuntu10.04已經自帶Python2.6了。
4.給Eclipse安裝PyDev插件
啟用Eclipse,第一次啟動會讓你選擇一個工作空間,按預設設置,勾選一下不再提醒,就可以了。
在Help菜單中,選擇InstallNewSoftware···,
選擇Add按鈕,Name:PyDev(這個隨便起),Location: /updates(PyDev的更新地址),OK

選擇PyDev下的PyDevforEclipse,別的都不要選,否則依賴檢查那關過不去。(注2)

點下一步,下一步安裝
中間會問你是否信任Aptana、Pydev什麼的,信任就可以了
最後重啟Eclipse

『貳』 ubuntu下怎麼build一個完整的python

解壓python代碼包,然後找到Setup.dist這個文件,把裡面注視掉的mole恢復出來,然後
./configure
make
make install
就能編譯出來了
make install的時候有時候會出錯,make install -i就可以忽略錯誤了。
有些mole需要對應的lib,需要額外安裝。
如果想在ubuntu下編譯android的python,需要改的地方比較多,還要額外編譯openssl之類的庫,但大體也是follow上面的步驟,就是編譯出錯後,一步一步把python代碼改改能通過就好了。

『叄』 怎樣在ubuntu16.04下編寫python

大多是linux系統都是集成了python開發環境的,直接在terminal輸入python就可以寫python代碼了。

『肆』 ubuntu python 用什麼開發

ubuntu自帶python和python的編輯器IDLE。你可以在終端輸入 idle 運行IDLE編輯器。寫好代碼按F5就可以運行。

或者可以在終端輸入命令
python your_code.py

如果你需要用別人已經寫好的包或者代碼,那麼還是學2.6吧,因為很多現有的代碼還沒移植到python3

如果只是自己從頭寫,可以學python3,其實兩者差別不大的

『伍』 ubuntu下怎麼build一個完整的python

我們需要一個一個編譯這些包:
1. common.sh:這個文件里包含一些基礎設置,比如選用的GCC,CFLAGS和LDFLAGS如何配置。

[plain] view plain
export NDKDIR="/你的NDK路徑比如/android-ndk-r10c"
# GCC 版本選用,目前有4.6,4.8,4.9,選用時也注意Linux系統的類型,這里x86_64是六十四位
export COMPILER="$NDKDIR/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin"
export CC="$COMPILER/arm-linux-androideabi-gcc"
export CXX="$COMPILER/arm-linux-androideabi-g++"
export CPP="$COMPILER/arm-linux-androideabi-cpp"
export LD="$COMPILER/arm-linux-androideabi-ld"
export AS="$COMPILER/arm-linux-androideabi-as"
export AR="$COMPILER/arm-linux-androideabi-ar"
export STRIP="$COMPILER/arm-linux-androideabi-strip"
export OBJCOPY="$COMPILER/arm-linux-androideabi-obj"
export OBJDUMP="$COMPILER/arm-linux-androideabi-objmp"
export RANLIB="$COMPILER/arm-linux-androideabi-ranlib"
export NM="$COMPILER/arm-linux-androideabi-nm"
export STRINGS="$COMPILER/arm-linux-androideabi-strings"
export READELF="$COMPILER/arm-linux-androideabi-readelf"

# 選擇要編譯文件在哪個Android版本上使用,這里案例是在Android 4.2上使用,就是android 17;2.2對應Android 8,5.0對應Android 21
export ANDROID="$NDKDIR/platforms/android-17/arch-arm/usr"
# 配置系統頭文件和庫文件位置
export CFLAGS="-I$ANDROID/include --sysroot=$ANDROID"
export CXXFLAGS="-I$ANDROID/include --sysroot=$ANDROID"
export CPPFLAGS="-I$ANDROID/include"
export LDFLAGS="-L$ANDROID/lib"

2. 編譯openssl:

[plain] view plain
tar zxf openssl-1.0.1j.tar.gz
cd openssl-1.0.1j
mkdir dist

source common.sh
MACHINE=armv7 SYSTEM=android ./config -fPIC --prefix=./dist

# 在Makefile里做一些補丁,以防error
sed -i "s|-m64||" Makefile
sed -i "s|-Wall|-Wall --sysroot=$ANDROID|" Makefile

# 編譯並安裝
make
make install

3. 編譯ncurses,readline,sqlite

仿照openssl的方法,編譯另外三個庫;其實還有一個zlib需要編譯,當然後面不讓python支持bz2就可以忽略。
注意readline編譯最好選擇--with-curses,然後把編譯好的ncurses鏈接上。庫類文件編譯,盡量都加-fPIC,這是什麼,不從匯編說還真說不清楚,還是大家自己去看官方文檔吧。
對於localeconv的問題,大家最好改寫下那個locale.h,在裡面把localeconv的struct里fix放上你要的字元,比如decimal_point是".",這樣後面都不會出這類locale的問題了。
這里給出快捷的解決方案就是把localeconv幹掉,直接hardcode:

[plain] view plain
# 在ncurses編譯之前,需要打的補丁
sed -i "s/#define isDecimalPoint(c) .*/#define isDecimalPoint(c) ((c) == '.')/" form/fty_num.c
sed -i "s/localeconv()/NULL/" form/fty_num.c

[plain] view plain
# 編譯ncurses
./configure --prefix=/YourPath --disable-home-terminfo --without-ada
make
make install
[plain] view plain
# 編譯readline
./configure --prefix=/YourPath --host=arm-linux --build=x86_64-linux \
--enable-static --enable-shared --with-curses
make
make install
[plain] view plain
# 編譯sqlite
./configure --host=arm-linux --build=x86_64-linux
make
make install
4. 編譯Python:
其實過程整體和openssl沒有什麼區別,細節上有一些注意事項。
- configure文件是需要手動fix的,打開文件,搜索 ac_cv_file__dev_ptmx 和 ac_cv_file__dev_ptc;刪除對這兩個變數的自動判斷。手動去Android查看/dev文件夾里有沒有ptmx和ptc設備,有就設置為yes沒就no:

[plain] view plain
ac_cv_file__dev_ptmx=yes
ac_cv_file__dev_ptc=no

- 打開Moles/Setup.dist文件,把需要的python模塊前面的#去掉,比如#_socket socketmole.c timemole.c,要python支持網路socket介面,需要把#去掉;建議盡量多加一些包;實在編譯不過的包不要,有些模塊需要額外下載開源軟體庫編譯,就不只openssl,ncurses,readline,sqlite了。

這樣就可以configure 了:

[plain] view plain
./configure --host=arm-unknown-linux-gnu --build=x86_64-unknown-linux-gnu \
--enable-ipv6

- 有一段編譯會報錯,仔細檢查,發現python需要編譯一個程序,這個程序跑在host上,但gcc是arm的,host linux是x86_64的,所以我們需要復制一份解壓好的python代碼,然後用本地原有的gcc編譯;當然編譯時直接./configure && make就可以了,直到Parser文件夾下出現了pgen這個可執行文件;把它拿出來,復制到另一個python源碼的Parser文件夾中,修改Makefile:

[plain] view plain
sed -i "s|\$(PGEN):.*|\$(PGEN):|" Makefile
sed -i "s|\$(CC) \$(OPT) \$(LDFLAGS) \$(PGENOBJS) \$(LIBS) -o \$(PGEN)|echo \"fake Parser/pgen\"|" Makefile
- 解決locale的問題,還有一些常量問題,笨方法hardcode:

[plain] view plain
sed -i "s|.*localeconv().*||" Objects/stringlib/localeutil.h
sed -i "s|locale_data->grouping|\"\"|" Objects/stringlib/localeutil.h
sed -i "s|locale_data->thousands_sep|\"\"|" Objects/stringlib/localeutil.h
sed -i "s|.*localeconv().*||" Objects/stringlib/formatter.h
sed -i "s|locale_data->grouping|\"\"|" Objects/stringlib/formatter.h
sed -i "s|locale_data->thousands_sep|\"\"|" Objects/stringlib/formatter.h
sed -i "s|locale_data->decimal_point|\".\"|" Objects/stringlib/formatter.h
sed -i "s|.*localeconv().*||" Python/pystrtod.c
sed -i "s|locale_data->decimal_point|\".\"|" Python/pystrtod.c
sed -i "s|I_PUSH|0x5302|" Moles/posixmole.c
sed -i "s|p->pw_gecos|\"\"|" Moles/pwdmole.c

- Moles/socketmole.c: 需要去掉一些#if,不然頭文件里沒有定義,或者直接去$ANDROID的include文件夾把相應.h文件補充完整也可以。

[cpp] view plain
...
Py_BEGIN_ALLOW_THREADS
#ifdef USE_GETHOSTBYNAME_LOCK
PyThread_acquire_lock(netdb_lock, 1);
#endif
h = gethostbyaddr(ap, al, af);
Py_END_ALLOW_THREADS
ret = gethost_common(h, (struct sockaddr *)&addr, sizeof(addr), af);
#ifdef USE_GETHOSTBYNAME_LOCK
PyThread_release_lock(netdb_lock);
#endif
return ret;
...

make然後make -i install,好啦,python編譯出來啦!

下面就是放到android上跑了。
需要Android是root的,不root也可以,就是得找個地方放。
需要把python編譯好的文件夾打包放到android上,還有sqlite里的那個so文件。
root的話可以在/system/bin里軟鏈接一個python。當然,sqlite.so.3要放在/system/lib里。
其實sqlite是可以不編譯的,但是我們的Django需要它,所以還是弄出來吧,ssl也可以不用,但是為了伺服器支持https,還是編譯下吧。
這樣就可以運行python了。

[html] view plain
# python
>>> 1+2
3
然後下載setuptools (https://pypi.python.org/pypi/setuptools/7.0) 和 pip (https://pypi.python.org/pypi/pip/1.5.6) 解壓並安裝:

[plain] view plain
gzip -d setuptools-7.0.tar.gz
tar xf setuptools-7.0.tar
cd setuptools-7.0
python setup.py build
python setup.py install

gzip -d pip-1.5.6.tar.gz
tar xf pip-1.5.6.tar
cd pip-1.5.6
python setup.py build
python setup.py install
把pip軟鏈接到/system/bin。好了,python有了pip,哈哈,隨心安裝包吧。先來個pip install virtualenv
接下去可以安裝django django-sslserver,把django-admin軟鏈接到/system/bin,就可以寫網站啦:

[plain] view plain
django-admin startproject test001
cd test001
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
不安裝django也可以直接對一個文件夾提供http服務:

[plain] view plain
python -m SimpleHTTPServer

有了server,在家庭里就可以搭建平台啦,如果有多個手機,連上wifi,就可以不用接線,完成無線分布式伺服器,趕快練習loadbalance吧。

嗯嗯,看看需不需要用手機伺服器隨時監控家裡的活動,然後插上SIM卡還能自動給我發簡訊,嘿嘿。

後面我們來想像怎麼解決pip install有時需要編譯c文件的問題。其實有團隊已經解決了這個問題。
下載Droid for GCC plugin的apk:http://www.liqucn.com/rj/228351.shtml (這個不是官網,最好去google play下載)
把apk解壓,然後找到gcc的壓縮包,裡面就有gcc了,把它放到Android上:

[plain] view plain
#include <stdio.h>
int main() {
printf("hello world!\n");
return 0;
}
然後gcc -o test test.c,並運行./test,完美輸出hello world。趕緊軟鏈接到/system/bin里吧。
好了,這樣numpy都可以編譯安裝了。還可以編譯下erl,把rabbitmq編譯下,弄個分布式也不是問題。最好移植一下lxc,然後把raspberry里的arm版java搬過來就無敵啦。買個USBminiB轉RJ45的頭就可以插網線了。

總體來說,可以搭建移動伺服器了,以後寫一些網頁版小應用,想用的時候android開個熱點,電腦一連,開始enjoy!

『陸』 ubuntu 下怎麼編寫python程序

如果是要IDLE那種界面的話,在shell里輸入python,如果要打開python3的話輸入python3

如果是小一點的程序可以用編輯器寫,sublime text就很好用了,
如果要寫復雜一些的東西,裝個IDE吧,推薦pyCharm

『柒』 在Ubuntu系統下如何用Python語言編寫網頁

Ubuntu自帶Python解釋器,你直接用gedit或者vim編寫一個純文本文件在首行加上:
#!/usr/bin/python然後把python代碼寫進去,再用chmod +x xxx.py命令給這個文件添加可執行許可權,這個py文件就能運行了。。。

至於你說怎麼編寫網頁,和Windows一樣~

『捌』 ubuntu16.04怎麼搭建python開發環境

簡述
原來在windows下實現的python code,因為業務需要,要將其放到Ubuntu(其實是Linux)下來進行開發和demo。因此安裝了目前最新的Ubuntu16.04 64bit系統,並搭建帶有GUI的python開發環境。

環境與工具選擇
最終確認選擇「Ubuntu16.04(64 bit)+ Python3.5 + Qt5.7.0 + SIP4.18.1 + PyQt5.7 + QScintilla2.9.2 + Eric6.0 」
首先Ubuntu16.04是默認安裝了python2.7和python3.5的,因此python這部分就可以不需要安裝了。因為涉及GUI的開發,所以要准備pyqt的環境等東西。查看系統python版本:
python
python3
python3.5

另外,需要安裝一個python模塊:
sudo apt-get install python3-dev
否則後面的SIP安裝會有找不到python.h的錯誤提示。

QT安裝
軟體安裝
可以從官網下載,也可以從http://download.qt.io/archive/qt/下載,我下載了5.7.0的Linux 64bit版本,是一個.run文件。

使用上面的兩行命令,進行安裝,此時會彈出安裝對話框:

然後按照提示一步步選擇即可:

安裝完成後,可以直接打開QT Creator:

軟體配置
我的Qt5.7.0安裝在/home/ethan下,這是在前面的安裝步驟時選擇的。而在/home/ethan/Qt5.7.0/5.7/gcc_64/bin/下有qmake。
安裝完成後用下面的命令配置一下PATH,在當前用戶主目錄下的.bashrc (or .zshrc)文件中加入:
export QTDIR=/home/ethan/Qt5.7.0/5.7/gcc_64/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib
export PATH=${QTDIR}/bin:${PATH}
此時再在命令行中輸入qmake,看到如下:

說明配置成功了。
另外需要將/usr/lib/x86_64-linux-gnu/qt4/bin/qmake軟連接到/home/ethan/Qt5.7.0/5.7/gcc_64/bin/qmake上,否則後面在編譯安裝PyQt時可能會出問題:
sudo ln -s /home/ethan/Qt5.7.0/5.7/gcc_64/bin/qmake /usr/lib/x86_64-linux-gnu/qt4/bin/qmake
這里最好把OpenGL的庫也安裝上,不然後面的GUI相關工具的安裝會有問題:
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev -y

SIP安裝
因為系統介面都是C, C++的而python要調用這些C/C++介面,就需要這個SIP,安裝PyQt之前必須先安裝對應版本的SIP。PyQt編譯時使用的SIP版本必須與python默認調用的SIP保持一致!否則python中是無法調用PyQt的。QT安裝的是當前最新的QT5.7.0,這里SIP最新版本也到了4.18.1,從SIP下載https://riverbankcomputing.com/software/sip/download下載SIP安裝文件,sip-4.18.1.tar.gz。在下載SIP之前,需要確認下自己的系統沒有默認安裝過其他版本,否則容易造成混亂。用
sip -V
可以看到系統的sip版本。不過我的系統並沒有SIP的。
下載的sip-4.18.1.tar.gz是一個源碼包,需要在本地編譯後安裝:
tar -zxvf sip-4.18.1.tar.gz
cd sip-4.18.1
python3 configure.py
sudo make
sudo make install
然後需要核對下當前的SIP版本以及python3中使用的SIP的版本,看兩者是否一致。核對當前SIP版本:
sip -V
會看到是4.18.1
然後命令行中輸入python3,打開python3.5環境,輸入:
>>> import sip
>>> print(sip.SIP_VERSION_STR)
也看到顯示是4.18.1的,這樣就說明SIP版本一致了,安裝OK。

QScintilla安裝
QScintilla2是連接編譯器和Python的介面,是Eric的必需前置組件。QScintilla2 中需要單獨安裝3個模塊,本體,Designer和python bindings。這一步先只安裝本體部分,後面兩個需要等安裝了PyQt5才能安裝,這個順序不能搞錯,不然會在安裝QScintilla的python bindings時會無法生成C++ code,導致安裝的失敗。首先需要從QScintilla下載https://www.riverbankcomputing.com/software/qscintilla/download下載源碼包。下載完成後,對QScintilla_gpl-2.9.3.tar.gz進行解壓:
tar -xzvf QScintilla_gpl-2.9.3.tar.gz
cd QScintilla-gpl-2.9.3
安裝本體:
cd Qt4Qt5
qmake qscintilla.pro
sudo make
sudo make install
如果在上面的sudo make時,出現「/usr/bin/ld: cannot find -lGL」問題,可以用如下命令做個軟連接:
sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so
之後再去sudo make。

PyQT5安裝
PyQt是Python的一個跨平台圖形開發工具集,是Python與Qt的成功融合。PyQt包含了大約440個類、超過6000個的函數和方法。
首先從PyQt5下載https://www.riverbankcomputing.com/software/pyqt/download5下載目前最新版本,PyQt5_gpl-5.7.tar.gz。使用如下命令編譯安裝:
tar -zxvf PyQt-gpl-5.7.tar.gz
cd PyQt-gpl-5.7
python3 configure.py
sudo make
sudo make install
然後使用python3命令進入python環境,輸入:
>>>import PyQt5
此時沒有任何提示,說明安裝沒有問題,PyQt5 mole import OK。

QScintilla安裝後續部分
前面已經安裝了本體Qt4Qt5部分了,這里在安裝完PyQt5後,再繼續安裝後面的兩個部分。

安裝Designer
cd QScintilla-gpl-2.9.3/designer-Qt4Qt5
qmake designer.pro
sudo make
sudo make install
如果在sudo make時,遇到「fatal error: GL/gl.h: No such file or directory」的問題,這是由於系統中沒有安裝OpenGL庫所導致。使用如下命令進行安裝OpenGL庫即可:
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev -y
安裝後再進行sudo make,就OK了。

安裝Python bindings
cd QScintilla-gpl-2.9.3/Python
python3 configure.py --pyqt=PyQt5
sudo make
sudo make install
這里Python bindings安裝時需要指定 –pyqt=PyQt5參數,否則默認是為PyQt4安裝。或者直接修改其configure.py,將pyqt5_is_default = False改為pyqt5_is_default = True也可。

Eric6安裝
Eric是一款強大的開源Python IDE,支持Qt界面設計器的Eric在Python GUI開發中更是首屈一指,Python+PyQt+Eric已經成為一種標準的Python GUI開發平台。首先從Eric6下載https://sourceforge.net/projects/eric-ide/files/下載安裝包代碼–eric6-6.1.7.tar.gz。然後用如下命令解壓安裝:
tar -zxvf eric6-6.1.7.tar.gz
cd eric6-6.1.7
sudo python3 install.py
此過程會檢測之前安裝的各個軟體及其版本信息,並且很快會安裝完成:

因為是通過sudo python3 install.py來安裝,在打開eric6時也要在前面加上sudo:
sudo eric6
接下來打開eric6界面進行配置,主要是配置eric編輯器功能:
剛打開界面,就提示需要進行配置:

選擇Settings -> preference -> Editor -> Autocompation。勾選所有選框,打開代碼自動完成功能:

選擇Settings -> preference -> Editor -> QScintilla 。勾上左右的兩個選框,然後在下面source中,選擇from Document and API files:

選擇Settings -> preference -> Editor -> APIs。勾選Complie APIs Autocompation,在Language中,選擇python3。點面下面的Add from installed APIs按鈕,選擇住需要的.api文件。最後點擊Compile APIs:

選擇Settings -> preference -> Interface -> Interface。右側Language根據喜好選擇中文或者English,我這里並沒有安裝中文語言包,所以使用默認的English。
接下來選擇自己的工程文檔將要放置的位置:

最後要重啟eric才生效。
接下來用一個小的demo簡單驗證下python開發環境是否搭建OK。
創建一個demo1.py的python源代碼,demo code:
#!/usr/bin/env python
from PyQt5.QtWidgets import (QApplication, QLabel)
import sys
if __name__ == "__main__":
app = QApplication(sys.argv)
label = QLabel("<center>Hello World with PyQt5!</center>")
label.resize(200, 50)
label.show()
sys.exit(app.exec_())
然後在放置demo1.py路徑下,使用如下命令運行該demo:
python3 demo1.py

『玖』 ubuntu 怎麼編譯 python3.4

你先在終端裡面輸入python3看看能不能打開,如果可以打開那你的系統上已經有python3了.
只要執行一個.py文件的時候,按下面的格式就可以了.
python3 test.py

如果沒有安裝python3,
wget http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tar xJf ./Python-3.3.5.tar.xz
cd ./Python-3.3.5
./configure --prefix=/opt/python3.3
make && sudo make install
上面就是下載/安裝3.3的命令全過程了.

『拾』 怎麼在ubuntu下 運行python的程序

1. 運行方式一

新建test.py文件:

1

touch test.py

然後vim test.py打開並編輯:

1

print 'Hello World'

打開終端,輸入命令:

1

python test.py

輸出:

1

Hello World

2. 運行方式二

這部分內容只對Linux/Unix用戶適用,不過Windows用戶可能也對程序的第一行比較好奇。
首先我們需要通過chmod命令,給程序可執行的許可,然後運行程序

1
2

chmod a+x helloworld.py
./helloworld.py

輸出:

1

Hello World

chmod命令用來改變文件的模式,給系統中所有用戶這個源文件的執行許可。
然後我們可以直接通過指定源文件的位置來執行程序。
我們使用./來指示程序位於當前目錄。

為了更加有趣一些,你可以把你的文件名改成僅僅helloworld,然後運行./helloworld。
這樣,這個程序仍然可以工作,因為系統知道它必須用源文件第一行指定的那個解釋器來運行程序。

3.運行方式三

只要知道程序的確切位置,你現在就可以運行程序了。
但是如果你希望你的程序能夠從各個位置運行呢?
可以將你的程序保存在PATH環境變數中的目錄之一。每當你運行任何程序,系統會查找列在PATH環境變數中的各個目錄。然後運行那個程序。你只要簡單地把這個源文件復制到PATH所列目錄之一就可以使你的程序在任何位置都可用了。

1

echo $PATH

輸出:

1

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

添加腳本至PATH:

1

cp helloworld.py /home/swaroop/bin/helloworld

然後運行:

1

helloworld.py

閱讀全文

與ubuntu如何編寫python相關的資料

熱點內容
銀河v10驅動重編譯 瀏覽:889
電腦上文件夾右擊就會崩潰 瀏覽:689
右美維持演算法 瀏覽:938
php基礎編程教程pdf 瀏覽:219
穿越之命令與征服將軍 瀏覽:351
android廣播重復 瀏覽:832
像阿里雲一樣的伺服器 瀏覽:318
水冷空調有壓縮機嗎 瀏覽:478
訪問日本伺服器可以做什麼 瀏覽:432
bytejava詳解 瀏覽:448
androidjava7 瀏覽:384
伺服器在山洞裡為什麼還有油 瀏覽:886
天天基金app在哪裡下載 瀏覽:974
伺服器軟路由怎麼做 瀏覽:292
冰箱壓縮機出口 瀏覽:228
OPT最佳頁面置換演算法 瀏覽:644
網盤忘記解壓碼怎麼辦 瀏覽:853
文件加密看不到裡面的內容 瀏覽:654
程序員腦子里都想什麼 瀏覽:434
oppp手機信任app在哪裡設置 瀏覽:189